Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/mhmdreza-rafiei/agent-tools/error-handlinggit clone --depth 1 https://github.com/mhmdreza-rafiei/agent-toolsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/mhmdreza-rafiei/agent-tools/error-handling)<a href="https://agentmods.dev/rules/mhmdreza-rafiei/agent-tools/error-handling"><img src="https://agentmods.dev/badge/rules/mhmdreza-rafiei/agent-tools/error-handling.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00022 | $0.00432 |
| Opus 5 | $0.00011 | $0.00216 |
| Sonnet 5 | $0.00004 | $0.00086 |
| Haiku 4.5 | $0.00002 | $0.00043 |
Grade A, and why
error-handling scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Error handling
Applies when writing code that can fail (I/O, parsing, network, auth, migrations). Load for features touching failure paths. Not every chat.
No silent catches
- Never catch and swallow. An empty
catchblock is a bug waiting to ship. - If you catch, you either (a) handle it (recover + continue), (b) rethrow with context, or (c) log + propagate. There is no fourth option.
return nullon error is silent failure. Prefer returning an error / Result type so the caller knows.
Typed errors
- Errors are typed and named, not bare strings or generic exceptions. A caller should be able to branch on the error type.
- Include the operation, the input that failed (redacted if sensitive), and the underlying cause in the error.
- Wrap, don't replace:
raise MyError("parse failed", cause=e)notraise MyError("parse failed").
Errors at the edges
- Fail fast at trust boundaries (parse, validate, auth). Inside the core, propagate; let the edge (handler, controller, CLI) decide the response.
- One place translates internal errors to the outside shape (HTTP status, CLI exit code, log line). Don't scatter translation across the core.
Logging
- Log with context (what, which input, which user/tenant) at the point of the catch, not deep in the core where context is lost.
- Never log secrets (tokens, passwords, PII). Redact before logging.
Do not
- Catch
Exception/Throwableto keep going — you'll hide bugs. - Retry without a backoff and a cap — you'll amplify an outage.
- Turn a recoverable error into a process crash (or vice versa) without intent.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 48 lines · 22 tokens per session scan A c5ba360b3137
error-handling is a cursor rule published in the GitHub repository mhmdreza-rafiei/agent-tools (5 stars, last pushed 18d ago), licensed MIT. It adds 22 tokens to every session and 432 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other cursor rules, from other repositories
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.
cli-error-handling
CLI command error handling patterns.
prefer-direct-imports-over-module-mocks
Prefer extracting a testable core over vi.mock / vi.resetModules when unit tests need to reach production logic entangled with config, env, or singletons.
control-plane-descriptors
Control plane descriptor and instance implementation patterns.