Sentry (Read-only Observability)
Quick start
- Requires
SENTRY_AUTH_TOKEN env var (read-only scopes: project:read, event:read, org:read).
- If missing, direct user to https://sentry.io/settings/account/api/auth-tokens/ — set as env var locally (never paste in chat).
- Optional env vars:
SENTRY_ORG, SENTRY_PROJECT, SENTRY_BASE_URL.
- Defaults: time range
24h, environment prod, limit 20 (max 50).
- Always call the Sentry API directly (no heuristics, no caching).
Core tasks (use bundled script)
Use scripts/sentry_api.py for deterministic API calls. It handles pagination and retries once on transient errors.
Skill path (set once)
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
export SENTRY_API="$CODEX_HOME/skills/sentry/scripts/sentry_api.py"
1) List issues (ordered by most recent)
python3 "$SENTRY_API" \
list-issues \
--org {your-org} \
--project {your-project} \
--environment prod \
--time-range 24h \
--limit 20 \
--query "is:unresolved"
2) Resolve an issue short ID to issue ID
python3 "$SENTRY_API" \
list-issues \
--org {your-org} \
--project {your-project} \
--query "ABC-123" \
--limit 1
Use the returned id for issue detail or events.
3) Issue detail
python3 "$SENTRY_API" \
issue-detail \
1234567890
4) Issue events
python3 "$SENTRY_API" \
issue-events \
1234567890 \
--limit 20
5) Event detail (no stack traces by default)
python3 "$SENTRY_API" \
event-detail \
--org {your-org} \
--project {your-project} \
abcdef1234567890
API requirements
Always use these endpoints (GET only):
- List issues:
/api/0/projects/{org_slug}/{project_slug}/issues/
- Issue detail:
/api/0/issues/{issue_id}/
- Events for issue:
/api/0/issues/{issue_id}/events/
- Event detail:
/api/0/projects/{org_slug}/{project_slug}/events/{event_id}/
Inputs and defaults
org_slug, project_slug: default to {your-org}/{your-project} (avoid non-prod orgs).
time_range: default 24h (pass as statsPeriod).
environment: default prod.
limit: default 20, max 50 (paginate until limit reached).
search_query: optional query parameter.
issue_short_id: resolve via list-issues query first.
Output formatting rules
- Issue list: show title, short_id, status, first_seen, last_seen, count, environments, top_tags; order by most recent.
- Event detail: include culprit, timestamp, environment, release, url.
- If no results, state explicitly.
- Redact PII in output (emails, IPs). Do not print raw stack traces.
- Never echo auth tokens.
Golden test inputs
- Org:
{your-org}
- Project:
{your-project}
- Issue short ID:
{ABC-123}
Example prompt: “List the top 10 open issues for prod in the last 24h.”
Expected: ordered list with titles, short IDs, counts, last seen.
1---2name: sentry3description: Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.4---567# Sentry (Read-only Observability)89## Quick start1011- Requires `SENTRY_AUTH_TOKEN` env var (read-only scopes: `project:read`, `event:read`, `org:read`).12- If missing, direct user to https://sentry.io/settings/account/api/auth-tokens/ — set as env var locally (never paste in chat).13- Optional env vars: `SENTRY_ORG`, `SENTRY_PROJECT`, `SENTRY_BASE_URL`.14- Defaults: time range `24h`, environment `prod`, limit 20 (max 50).15- Always call the Sentry API directly (no heuristics, no caching).1617## Core tasks (use bundled script)1819Use `scripts/sentry_api.py` for deterministic API calls. It handles pagination and retries once on transient errors.2021## Skill path (set once)2223```bash24export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"25export SENTRY_API="$CODEX_HOME/skills/sentry/scripts/sentry_api.py"26```2728### 1) List issues (ordered by most recent)2930```bash31python3 "$SENTRY_API" \32 list-issues \33 --org {your-org} \34 --project {your-project} \35 --environment prod \36 --time-range 24h \37 --limit 20 \38 --query "is:unresolved"39```4041### 2) Resolve an issue short ID to issue ID4243```bash44python3 "$SENTRY_API" \45 list-issues \46 --org {your-org} \47 --project {your-project} \48 --query "ABC-123" \49 --limit 150```5152Use the returned `id` for issue detail or events.5354### 3) Issue detail5556```bash57python3 "$SENTRY_API" \58 issue-detail \59 123456789060```6162### 4) Issue events6364```bash65python3 "$SENTRY_API" \66 issue-events \67 1234567890 \68 --limit 2069```7071### 5) Event detail (no stack traces by default)7273```bash74python3 "$SENTRY_API" \75 event-detail \76 --org {your-org} \77 --project {your-project} \78 abcdef123456789079```8081## API requirements8283Always use these endpoints (GET only):8485- List issues: `/api/0/projects/{org_slug}/{project_slug}/issues/`86- Issue detail: `/api/0/issues/{issue_id}/`87- Events for issue: `/api/0/issues/{issue_id}/events/`88- Event detail: `/api/0/projects/{org_slug}/{project_slug}/events/{event_id}/`8990## Inputs and defaults9192- `org_slug`, `project_slug`: default to `{your-org}`/`{your-project}` (avoid non-prod orgs).93- `time_range`: default `24h` (pass as `statsPeriod`).94- `environment`: default `prod`.95- `limit`: default 20, max 50 (paginate until limit reached).96- `search_query`: optional `query` parameter.97- `issue_short_id`: resolve via list-issues query first.9899## Output formatting rules100101- Issue list: show title, short_id, status, first_seen, last_seen, count, environments, top_tags; order by most recent.102- Event detail: include culprit, timestamp, environment, release, url.103- If no results, state explicitly.104- Redact PII in output (emails, IPs). Do not print raw stack traces.105- Never echo auth tokens.106107## Golden test inputs108109- Org: `{your-org}`110- Project: `{your-project}`111- Issue short ID: `{ABC-123}`112113Example prompt: “List the top 10 open issues for prod in the last 24h.”114Expected: ordered list with titles, short IDs, counts, last seen.