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/getsentry/sentry-java/optionsgit clone --depth 1 https://github.com/getsentry/sentry-javaWrote 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/getsentry/sentry-java/options)<a href="https://agentmods.dev/rules/getsentry/sentry-java/options"><img src="https://agentmods.dev/badge/rules/getsentry/sentry-java/options.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 | $0.00005 | $0.01442 |
| Opus 5 | $0.00003 | $0.00721 |
| Sonnet 5 | $0.00001 | $0.00288 |
| Haiku 4.5 | $0.00001 | $0.00144 |
Grade A, and why
options 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 today.
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.
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Adding Options to the SDK
New features must be opt-in by default. Options control whether a feature is enabled and how it behaves.
Namespaced Options
Newer features use namespaced option classes nested inside SentryOptions, e.g.:
SentryOptions.getLogs()→SentryOptions.LogsSentryOptions.getMetrics()→SentryOptions.Metrics
Each namespaced options class is a public static final class inside SentryOptions with its own fields, getters/setters, and callbacks (e.g. BeforeSendLogCallback, BeforeSendMetricCallback).
A typical namespaced options class contains:
enabledboolean (defaultfalsefor opt-in)sampleRatedouble (if the feature supports sampling)beforeSendcallback interface (nested inside the options class)
To add a new namespaced options class:
- Create the
public static final classinsideSentryOptionswith fields, getters/setters, and any callback interfaces - Add a private field on
SentryOptionsinitialized withnew SentryOptions.MyFeature() - Add getter/setter on
SentryOptionsannotated with@ApiStatus.Experimental
Direct (Non-Namespaced) Options
Options that apply globally across the SDK (e.g. dsn, environment, release, sampleRate, maxBreadcrumbs) live as direct fields on SentryOptions with getter/setter pairs. Use this pattern for options that aren't tied to a specific feature namespace.
Configuration Layers
Options can be set through multiple layers. When adding a new option, consider which layers apply:
1. SentryOptions (always required)
The core options class. Add the field (or nested class) with getter/setter here.
File: sentry/src/main/java/io/sentry/SentryOptions.java
Tests: sentry/src/test/java/io/sentry/SentryOptionsTest.kt
- Test the default value
- Test merge behavior (see layer 2)
2. ExternalOptions (sentry.properties / environment variables)
Allows setting options via sentry.properties file or system properties. Fields use nullable wrapper types (@Nullable Boolean, @Nullable Double) since unset means "don't override the default."
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.
- today First seen · 116 lines · 5 tokens per session scan A 01109f7332e1
options is a cursor rule published in the GitHub repository getsentry/sentry-java (1,349 stars, last pushed today), licensed MIT. It adds 5 tokens to every session and 1,442 once invoked, about $0.0000 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-09-03.
Other cursor rules, from other repositories
android-viewmodel
Android ViewModel conventions — StateFlow, repository abstraction, coroutines, no LiveData.
swiftui-accessibility
SwiftUI accessibility rules for VoiceOver — labels, hints, traits, values, and attribute preservation.
security-threat-and-stability
Maximum security scrutiny on issues/PRs and stability-first code changes.
project-status
PriceGrab shipped state and product backlog (read first).
best-practices
Engineering best practices for this codebase.
android-gradle-build-logic
Shape Android build logic with Gradle, version catalogs, plugins, convention patterns, and toolchain compatibility.