Sentry CLI
Org: elevate-code. Auth token stored in ~/.sentryclirc.
IMPORTANT: Always use sentry-cli first. Only fall back to curl/API if sentry-cli genuinely lacks the subcommand. Run sentry-cli <command> --help to discover flags before assuming something isn't supported.
Common Commands
# List projects
sentry-cli projects list --org elevate-code
# List unresolved issues for a project (use -s flag, not --query)
sentry-cli issues list -o elevate-code -p <project-slug> -s unresolved
# Resolve/mute/unresolve — use -i for ID, -p is required
sentry-cli issues resolve -o elevate-code -p <project-slug> -i <issue-id>
sentry-cli issues mute -o elevate-code -p <project-slug> -i <issue-id>
sentry-cli issues unresolve -o elevate-code -p <project-slug> -i <issue-id>
Cross-org gotcha: a personal user token (sntryu_...) only reaches orgs where that user is an active member. If an org is over its seat limit the user's membership gets silently disabled and every query 401s with "code": "member-disabled-over-limit". Workaround: have an org owner create an Internal Integration (Sentry → Developer Settings) with the needed read scopes — those tokens (sntrys_...) don't consume a seat — and drop it in a project-local .sentryclirc (sentry-cli reads ./.sentryclirc before ~/.sentryclirc).
API Fallback (last resort)
Only if sentry-cli lacks the subcommand (e.g. fetching full event payloads/stack traces):
curl -s -H "Authorization: Bearer $(grep token ~/.sentryclirc | cut -d= -f2)" \
"https://sentry.io/api/0/issues/<issue-id>/events/latest/" | python -m json.tool