From d61b8fbc06620cf42853ec1d94ef9043003b2f7e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 3 Aug 2026 12:11:30 +0000 Subject: [PATCH 1/3] docs: fix Node.js version, stale version pins, license, agent list, and auth examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getting-started.mdx: correct Node.js requirement from 22.15+ to 20+ (matches package.json engines.node >= 20.0; 22.15+ gives native sqlite) - getting-started.mdx, install script, env-registry: update version pin example from 0.19.0 to 0.40.0 - .craft.yml: fix Homebrew formula license FSL-1.1-MIT → FSL-1.1-Apache-2.0 to match package.json and LICENSE.md - agentic-usage.md: expand supported agent list to include all 11 agents detected by detect-agent.ts (was only Claude Code + Cursor) - auth.md fragment: add examples for --read-only, --scope, and --url flags Co-authored-by: Miguel Betegón --- .craft.yml | 2 +- .../src/content/docs/agentic-usage.md | 4 ++-- .../src/content/docs/getting-started.mdx | 4 ++-- apps/cli-docs/src/fragments/commands/auth.md | 23 ++++++++++++++++++- packages/cli/install | 4 ++-- packages/cli/src/lib/env-registry.ts | 2 +- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/.craft.yml b/.craft.yml index 692ccd3bba..aa9b7f7d26 100644 --- a/.craft.yml +++ b/.craft.yml @@ -38,7 +38,7 @@ targets: desc "Sentry command-line tool for error monitoring and debugging" homepage "https://cli.sentry.dev" version "{{version}}" - license "FSL-1.1-MIT" + license "FSL-1.1-Apache-2.0" if OS.mac? if Hardware::CPU.arm? diff --git a/apps/cli-docs/src/content/docs/agentic-usage.md b/apps/cli-docs/src/content/docs/agentic-usage.md index f18193b1a0..8c2d482e78 100644 --- a/apps/cli-docs/src/content/docs/agentic-usage.md +++ b/apps/cli-docs/src/content/docs/agentic-usage.md @@ -3,7 +3,7 @@ title: Agentic Usage description: Enable AI coding agents to use the Sentry CLI --- -AI coding agents like Claude Code — and any agent that reads skills from `~/.agents` (such as Cursor) — can use the Sentry CLI through the skill system. This allows agents to interact with Sentry directly from your development environment. +AI coding agents can use the Sentry CLI through the skill system. The CLI detects and supports Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI, OpenAI Codex, Goose, Amp, Augment, OpenCode, and any agent that reads skills from `~/.agents`. This allows agents to interact with Sentry directly from your development environment. ## Automatic Installation @@ -49,4 +49,4 @@ The skill uses your existing CLI authentication, so you'll need to run `sentry a ## Requirements - An authenticated Sentry CLI installation (`sentry auth login`) -- An AI coding agent that supports the skills system (e.g., Claude Code, or any agent that reads from `~/.agents` such as Cursor) +- An AI coding agent that supports the skills system (e.g., Claude Code, Cursor, Windsurf, GitHub Copilot, Gemini CLI, Codex, Goose, Amp, Augment, OpenCode, or any agent that reads from `~/.agents`) diff --git a/apps/cli-docs/src/content/docs/getting-started.mdx b/apps/cli-docs/src/content/docs/getting-started.mdx index d3d9e8cbb9..ee60060583 100644 --- a/apps/cli-docs/src/content/docs/getting-started.mdx +++ b/apps/cli-docs/src/content/docs/getting-started.mdx @@ -24,7 +24,7 @@ which is especially useful in CI/CD pipelines and Dockerfiles: ```bash # Pin to a specific stable version -SENTRY_VERSION=0.19.0 curl https://cli.sentry.dev/install -fsS | bash +SENTRY_VERSION=0.40.0 curl https://cli.sentry.dev/install -fsS | bash # Pin to nightly SENTRY_VERSION=nightly curl https://cli.sentry.dev/install -fsS | bash @@ -75,7 +75,7 @@ brew install getsentry/tools/sentry ## Package Managers -Install globally with your preferred package manager (the npm/pnpm/yarn packages require **Node.js 22.15+**): +Install globally with your preferred package manager (the npm packages require **Node.js 20+**; on **22.15+** the built-in `node:sqlite` is used, on 20–22.14 a bundled WASM fallback is used transparently): Date: Mon, 3 Aug 2026 12:11:41 +0000 Subject: [PATCH 2/3] Add extracted command metadata for all 107 CLI commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Structured JSON with command_path, brief, fullDescription, flags (name, type, description, hidden, optional, variadic, default), and positional_params for every leaf command. Co-authored-by: Miguel Betegón --- command-metadata.json | 4825 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4825 insertions(+) create mode 100644 command-metadata.json diff --git a/command-metadata.json b/command-metadata.json new file mode 100644 index 0000000000..966a005122 --- /dev/null +++ b/command-metadata.json @@ -0,0 +1,4825 @@ +[ + { + "command_path": "sentry alert issues create", + "brief": "Create an issue alert rule", + "fullDescription": "Create a project-scoped issue alert rule. The target may be an explicit /, an auto-detected project, or a bare project search when it resolves to exactly one project.nnRequired fields:n --name, --condition (>=1), --action (>=1)nnOptional fields:n --frequency, --environment, --filter, --filter-match, --ownernnConditions and actions are workflow-native JSON (this targets thenorg-scoped workflows endpoint):n --condition a trigger data-condition: {type, comparison, conditionResult}n --action an action: {type, data, config}n --filter an action-filter condition (same shape as --condition)nnMatch mode: --filter-match all|any controls how the action-filternconditions combine. Issue-alert triggers always evaluate as 'any-short'n(they fire on a single error detector), so there is no trigger match flag.nnExamples:n sentry alert issues create my-org/my-app --name 'New Issues' \\n --condition '{\"type\":\"first_seen_event\",\"comparison\":true,\"conditionResult\":true}' \\n --action '{\"type\":\"email\",\"data\":{},\"config\":{\"targetType\":\"team\",\"targetIdentifier\":\"1\"}}'nn sentry alert issues create my-org/my-app --name 'High Priority' \\n --condition '{\"type\":\"new_high_priority_issue\",\"comparison\":true,\"conditionResult\":true}' \\n --action '{\"type\":\"email\",\"data\":{},\"config\":{\"targetType\":\"user\",\"targetIdentifier\":\"56789\"}}' \\n --frequency 30 --dry-run", + "flags": [ + { + "name": "name", + "type": "parsed", + "description": "Rule name", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "condition", + "type": "parsed", + "description": "Condition object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "action", + "type": "parsed", + "description": "Action object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "frequency", + "type": "parsed", + "description": "Frequency in minutes (default: 30)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "30" + }, + { + "name": "environment", + "type": "parsed", + "description": "Environment filter", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "filter", + "type": "parsed", + "description": "Filter object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "filter-match", + "type": "parsed", + "description": "Filter match mode: all or any", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "owner", + "type": "parsed", + "description": "Owner (team:user style value accepted by Sentry API)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "/, auto-detected project, or (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry alert issues delete", + "brief": "Delete an issue alert rule", + "fullDescription": "Permanently remove an issue alert rule from a project. This cannot be undone.nnYou will be asked to type org/project/rule-id to confirm, unless you pass --yes or --force, or use --dry-run to preview only.nnExamples:n sentry alert issues delete my-org/my-app/12345n sentry alert issues delete my-org/my-app/'My Rule' --yesn sentry alert issues delete my-org/my-app/12345 --dry-run", + "flags": [ + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/rule-id-or-name", + "description": "Rule id or name (same as view)" + } + ] + }, + { + "command_path": "sentry alert issues edit", + "brief": "Edit an issue alert rule", + "fullDescription": "Update an issue alert rule by id or name. You must set at least one of --name or --status.nnThe CLI loads the current rule, applies your changes, and updates it via the API.nnExamples:n sentry alert issues edit my-org/my-app/12 --name 'Prod errors'n sentry alert issues edit my-org/my-app/'Old name' --status disabledn sentry alert issues edit 12 --name 'Renamed' --status activen sentry alert issues edit my-org/my-app/12 --condition '{\"id\":\"sentry.rules.conditions.first_seen_event.FirstSeenEventCondition\"}'", + "flags": [ + { + "name": "name", + "type": "parsed", + "description": "New rule name", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "status", + "type": "parsed", + "description": "Rule status: active or disabled", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "condition", + "type": "parsed", + "description": "Condition object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "action", + "type": "parsed", + "description": "Action object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "frequency", + "type": "parsed", + "description": "Frequency in minutes", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "environment", + "type": "parsed", + "description": "Environment value (pass empty string to clear)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "filter", + "type": "parsed", + "description": "Filter object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "filter-match", + "type": "parsed", + "description": "Filter match mode: all or any", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "owner", + "type": "parsed", + "description": "Owner value (pass empty string to clear)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "org/project/rule-id-or-name", + "description": "Rule id or name (same as view)" + } + ] + }, + { + "command_path": "sentry alert issues list", + "brief": "List issue alert rules", + "fullDescription": "List issue alert rules for one or more Sentry projects.nnIssue alerts trigger notifications when error events match conditions.nnTarget patterns:n sentry alert issues list # auto-detect from DSN or confign sentry alert issues list / # explicit org and projectn sentry alert issues list / # all projects in orgn sentry alert issues list # find project across all orgsnn${targetPatternExplanation()}\\n\\nIn monorepos with multiple Sentry projects, shows alert rules from all detected projects.nnUse --cursor / -c next / -c prev to paginate through larger result sets.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "query", + "type": "parsed", + "description": "Filter rules by name", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "cursor", + "type": "parsed", + "description": "Pagination cursor (use \"next\" for next page, \"prev\" for previous)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of issue alert rules to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "/, auto-detected project, or (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry alert issues view", + "brief": "View an issue alert rule", + "fullDescription": "View a single issue alert rule by ID or name.nnExamples:n sentry alert issues view 12345n sentry alert issues view my-org/my-project/12345n sentry alert issues view my-org/my-project/'Error Spike'", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open issue alert rules page in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/rule-id-or-name", + "description": "Issue alert rule ID or name" + } + ] + }, + { + "command_path": "sentry alert metrics create", + "brief": "Create a metric alert rule", + "fullDescription": "Create an organization-scoped metric alert rule.nnRequired fields:n --name, --query, --aggregate, --dataset, --time-window, --trigger (>=1), --projectnnOptional fields:n --environment, --ownernnExamples:n sentry alert metrics create my-org --name 'P95 latency' \\n --query 'environment:prod' --aggregate 'p95(transaction.duration)' \\n --dataset transactions --time-window 5 \\n --trigger '{\"alertThreshold\":500,\"actions\":[{\"id\":\"sentry.mail.actions.NotifyEmailAction\",\"targetType\":\"Team\",\"targetIdentifier\":1}]}'nn sentry alert metrics create my-org --name 'Error volume' \\n --query 'event.type:error' --aggregate 'count()' --dataset errors \\n --time-window 15 --trigger '[{\"alertThreshold\":100,\"actions\":[{\"id\":\"sentry.mail.actions.NotifyEmailAction\",\"targetType\":\"Team\",\"targetIdentifier\":1}]}]' \\n --project my-app --dry-run", + "flags": [ + { + "name": "name", + "type": "parsed", + "description": "Rule name", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "query", + "type": "parsed", + "description": "Metric query filter string", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "aggregate", + "type": "parsed", + "description": "Aggregate expression (for example count(), p95(transaction.duration))", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "dataset", + "type": "parsed", + "description": "Dataset (errors, transactions, sessions, events, spans, metrics)", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "time-window", + "type": "parsed", + "description": "Evaluation window in minutes", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "trigger", + "type": "parsed", + "description": "Trigger object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "project", + "type": "parsed", + "description": "Project slug filter (repeatable or comma-separated)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "environment", + "type": "parsed", + "description": "Environment filter", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "owner", + "type": "parsed", + "description": "Owner value accepted by Sentry API", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org", + "description": "Target organization" + } + ] + }, + { + "command_path": "sentry alert metrics delete", + "brief": "Delete a metric alert rule", + "fullDescription": "Permanently remove a metric alert rule from an organization. Type org/rule-id to confirm, or use --yes / --force, or --dry-run.nnExamples:n sentry alert metrics delete my-org/12345n sentry alert metrics delete my-org/'P95 alert' --yes", + "flags": [ + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/rule-id-or-name", + "description": "Rule id or name (same as view)" + } + ] + }, + { + "command_path": "sentry alert metrics edit", + "brief": "Edit a metric alert rule", + "fullDescription": "Update a metric alert rule. Pass at least one of --name or --status. Status 'active' enables the rule; 'disabled' sets it to disabled (API status 1).nnExamples:n sentry alert metrics edit my-org/9 --name 'Error budget'n sentry alert metrics edit my-org/9 --status disabledn sentry alert metrics edit my-org/9 --time-window 15 --dataset transactions", + "flags": [ + { + "name": "name", + "type": "parsed", + "description": "New rule name", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "status", + "type": "parsed", + "description": "active or disabled", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "query", + "type": "parsed", + "description": "Metric query filter", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "aggregate", + "type": "parsed", + "description": "Aggregate expression", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dataset", + "type": "parsed", + "description": "Dataset (errors, transactions, sessions, events, spans, metrics)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "time-window", + "type": "parsed", + "description": "Evaluation window in minutes", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "trigger", + "type": "parsed", + "description": "Trigger object JSON (repeatable, or pass one JSON array)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "project", + "type": "parsed", + "description": "Project slug filter (repeatable or comma-separated)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "environment", + "type": "parsed", + "description": "Environment value (pass empty string to clear)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "owner", + "type": "parsed", + "description": "Owner value (pass empty string to clear)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "org/rule-id-or-name", + "description": "Rule id or name (same as view)" + } + ] + }, + { + "command_path": "sentry alert metrics list", + "brief": "/, / (project ignored), or (search)", + "fullDescription": "List metric alert rules for one or more Sentry organizations.nnMetric alerts trigger notifications when a metric query crosses a threshold.nnTarget patterns:n sentry alert metrics list # auto-detect from DSN or confign sentry alert metrics list / # explicit org (paginated)n sentry alert metrics list / # explicit org (project ignored)n sentry alert metrics list # find project across all orgsnn${targetPatternExplanation()}\\n\\nMetric alert rules are org-scoped; the project part is ignored when provided.nnUse --cursor / -c next / -c prev to paginate through larger result sets.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "query", + "type": "parsed", + "description": "Filter rules by name", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "cursor", + "type": "parsed", + "description": "Pagination cursor (use \"next\" for next page, \"prev\" for previous)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of metric alert rules to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "/, / (project ignored), or (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry alert metrics view", + "brief": "View a metric alert rule", + "fullDescription": "View a single metric alert rule by ID or name.nnExamples:n sentry alert metrics view 12345n sentry alert metrics view my-org/12345n sentry alert metrics view my-org/'p95 latency alert'", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open metric alert rules page in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/rule-id-or-name", + "description": "Metric alert rule ID or name" + } + ] + }, + { + "command_path": "sentry api", + "brief": "Make an authenticated API request", + "fullDescription": "Make a raw API request to the Sentry API. Similar to 'gh api' for GitHub. The endpoint is relative to /api/0/ (do not include the prefix). Authentication is handled automatically using your stored credentials.nnBody options:n --data/-d '{\"key\":\"value\"}' Inline JSON body (like curl -d)n --input/-i file.json Read body from file (or \"-\" for stdin)nnField syntax (--field/-F):n key=value Simple field (values parsed as JSON if valid)n key[sub]=value Nested object: {key: {sub: value}}n key[]=value Array append: {key: [value]}n key[] Empty array: {key: []}nnUse --raw-field/-f to send values as strings without JSON parsing.nnExamples:n sentry api organizations/n sentry api issues/123/ -X PUT -F status=resolvedn sentry api issues/123/ -X PUT -d '{\"status\":\"resolved\"}'n sentry api projects/my-org/my-project/ -F options[sampleRate]=0.5n sentry api teams/my-org/my-team/members/ -F user[email]=user@example.com", + "flags": [ + { + "name": "method", + "type": "parsed", + "description": "The HTTP method for the request", + "hidden": false, + "optional": false, + "variadic": false, + "default": "GET" + }, + { + "name": "data", + "type": "parsed", + "description": "Inline JSON body for the request (like curl -d)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "field", + "type": "parsed", + "description": "Add a typed parameter (key=value, key[sub]=value, key[]=value)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "raw-field", + "type": "parsed", + "description": "Add a string parameter without JSON parsing", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "header", + "type": "parsed", + "description": "Add a HTTP request header in key:value format", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "input", + "type": "parsed", + "description": "The file to use as body for the HTTP request (use \"-\" to read from standard input)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "silent", + "type": "boolean", + "description": "Do not print the response body", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "verbose", + "type": "boolean", + "description": "Include full HTTP request and response in the output", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show the resolved request without sending it", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "endpoint", + "description": "API endpoint relative to /api/0/ (e.g., organizations/)" + } + ] + }, + { + "command_path": "sentry auth login", + "brief": "Authenticate with Sentry", + "fullDescription": "Log in to Sentry using OAuth or an API token.nnThe OAuth flow uses a device code - you'll be given a code to enter at a URL.nAlternatively, use --token to authenticate with an existing API token.nnFor self-hosted Sentry, pass --url to authenticate against thatninstance. This is the ONLY way to trust a new Sentry host — URLnarguments and config files are refused when they don't match thencurrently-authenticated host.", + "flags": [ + { + "name": "token", + "type": "parsed", + "description": "Authenticate using an API token instead of OAuth", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "timeout", + "type": "parsed", + "description": "Timeout for OAuth flow in seconds (default: 900)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "900)\"" + }, + { + "name": "force", + "type": "boolean", + "description": "Re-authenticate without prompting", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "url", + "type": "parsed", + "description": "Sentry instance URL to authenticate against (e.g. https://sentry.example.com). Required for self-hosted; defaults to SaaS (https://sentry.io).", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "read-only", + "type": "boolean", + "description": "Request only read-only OAuth scopes (project:read, org:read, event:read, member:read, team:read). Useful for handing tokens to AI agents or CI jobs that should not be able to mutate Sentry state.", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "scope", + "type": "parsed", + "description": "Request specific OAuth scopes (repeatable, comma-separated). E.g. --scope project:read --scope org:read. Overrides the default scope set.", + "hidden": false, + "optional": true, + "variadic": true + } + ], + "positional_params": [] + }, + { + "command_path": "sentry auth logout", + "brief": "Log out of Sentry", + "fullDescription": "Remove stored authentication credentials from the local database.", + "flags": [], + "positional_params": [] + }, + { + "command_path": "sentry auth refresh", + "brief": "Refresh your OAuth access token", + "fullDescription": "Manually refresh your OAuth access token using the stored refresh token.\n\nAccess token refresh normally happens automatically when making API requests.\nUse this command to force an immediate refresh or to verify the refresh\nmechanism is working correctly.\n\nWhen --scope or --read-only is passed, re-authenticates via the OAuth\ndevice flow with the requested scopes instead of refreshing the existing\ntoken. This is the preferred way to add or change scopes on an existing\nsession (similar to \\", + "flags": [ + { + "name": "force", + "type": "boolean", + "description": "Force refresh even if the access token is still valid", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "read-only", + "type": "boolean", + "description": "Re-authenticate with read-only OAuth scopes (project:read, org:read, event:read, member:read, team:read)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "scope", + "type": "parsed", + "description": "Re-authenticate with specific OAuth scopes (repeatable, comma-separated). E.g. --scope project:read --scope org:read", + "hidden": false, + "optional": true, + "variadic": true + } + ], + "positional_params": [] + }, + { + "command_path": "sentry auth status", + "brief": "View authentication status", + "fullDescription": "Display information about your current authentication status, including whether you're logged in and your default organization/project settings.", + "flags": [ + { + "name": "show-token", + "type": "boolean", + "description": "Show the stored token (masked by default)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry auth token", + "brief": "Print the stored authentication token", + "fullDescription": "Print the stored authentication token to stdout.nnThis outputs the raw token without any formatting, making it suitable for piping to other commands or scripts.", + "flags": [], + "positional_params": [] + }, + { + "command_path": "sentry auth whoami", + "brief": "Show the currently authenticated identity", + "fullDescription": "Display the identity behind the current authentication token.nnFor user-scoped tokens (OAuth, personal access tokens), this fetches the user from the Sentry API. For organization auth tokens (`sntrys_`), it shows which organization the token belongs to.", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry bash-hook", + "brief": "Print a bash script for shell error reporting", + "fullDescription": "Output a bash script snippet that, when eval'd, sets up ERR and EXITntraps to automatically capture and report shell errors to Sentry.nnUsage:n eval \"$(sentry bash-hook)\"nnThe generated script requires SENTRY_DSN to be set in the environment.nWhen an error occurs, it calls back into the CLI to send the event.", + "flags": [ + { + "name": "no-exit", + "type": "boolean", + "description": "Do not prepend 'set -e' to the script", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-environ", + "type": "boolean", + "description": "No-op (environment variables are never sent)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "allow-xcode-infoplist-preprocessing", + "type": "boolean", + "description": "No-op (kept for backward compatibility with old sentry-cli scripts)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "cli", + "type": "parsed", + "description": "Override the sentry-cli command path in the generated script", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "tag", + "type": "parsed", + "description": "Add a tag as KEY:VALUE to the event (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "release", + "type": "parsed", + "description": "Set the release version for the event", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dsn", + "type": "parsed", + "description": "DSN to send events to (overrides SENTRY_DSN env var)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "send-event", + "type": "boolean", + "description": "Internal: send a bash error event from traceback/log files", + "hidden": true, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "traceback", + "type": "parsed", + "description": "Internal: path to the traceback file", + "hidden": true, + "optional": true, + "variadic": false + }, + { + "name": "log", + "type": "parsed", + "description": "Internal: path to the log file", + "hidden": true, + "optional": true, + "variadic": false + } + ], + "positional_params": [] + }, + { + "command_path": "sentry build download", + "brief": "Download a build artifact", + "fullDescription": "Download a mobile build artifact (APK or IPA) previously uploaded to Sentry's preprod system for size analysis. The build is resolved by ID within the organization; the artifact is streamed to a local file.nnThis feature only works with Sentry SaaS.nnUsage:n sentry build download 1234567890n sentry build download 1234567890 --output ./app.ipa", + "flags": [ + { + "name": "output", + "type": "parsed", + "description": "Output path (default: preprod_artifact_. in the current directory)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "preprod_artifact_. in the current directory)\"" + } + ], + "positional_params": [ + { + "name": "build-id", + "description": "ID of the build to download" + } + ] + }, + { + "command_path": "sentry build upload", + "brief": "Upload builds to a project", + "fullDescription": "Upload mobile builds to Sentry for preprod size analysis. Each build is normalized into a deterministic ZIP and uploaded via the chunk-upload + assemble protocol.nnSupported formats: Android APK/AAB, iOS XCArchive (a directory) and IPA. Note: iOS Assets.car asset catalogs are not parsed into per-asset images. This feature only works with Sentry SaaS.nnUsage:n sentry build upload ./app-release.apkn sentry build upload ./MyApp.xcarchiven sentry build upload ./MyApp.ipa --build-configuration Releasen sentry build upload ./app.aab --install-group qa --install-group beta", + "flags": [ + { + "name": "build-configuration", + "type": "parsed", + "description": "Build configuration for the upload (defaults to the current version)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "release-notes", + "type": "parsed", + "description": "Release notes for the build", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "install-group", + "type": "parsed", + "description": "Install group(s) for this build (repeatable); builds sharing a group show updates for each other", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "head-sha", + "type": "parsed", + "description": "VCS commit SHA (defaults to the current commit)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-sha", + "type": "parsed", + "description": "VCS base commit SHA (defaults to the merge-base with the base ref)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "vcs-provider", + "type": "parsed", + "description": "VCS provider (defaults to the current remote's provider)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "head-repo-name", + "type": "parsed", + "description": "Head repository name, e.g. owner/repo (defaults to the current)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-repo-name", + "type": "parsed", + "description": "Base repository name, e.g. owner/repo (for forks)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "head-ref", + "type": "parsed", + "description": "Head branch/reference (defaults to the current branch)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-ref", + "type": "parsed", + "description": "Base branch/reference (defaults to the merge-base tracking ref)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "pr-number", + "type": "parsed", + "description": "Pull request number (auto-detected in pull_request GitHub Actions runs)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "force-git-metadata", + "type": "boolean", + "description": "Force collecting git metadata even outside CI (conflicts with --no-git-metadata)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-git-metadata", + "type": "boolean", + "description": "Disable automatic git metadata collection", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "path", + "description": "Path(s) to the build(s) to upload (APK, AAB, IPA, or XCArchive)", + "variadic": true + } + ] + }, + { + "command_path": "sentry cli defaults", + "brief": "View and manage default settings", + "fullDescription": "View and manage persistent CLI default settings.nnWith no arguments, shows all current defaults. Pass a key and valuento set a default, or use `--clear` to remove defaults.nn## Examplesnn```nsentry cli defaults # Show all defaultsnsentry cli defaults org my-org # Set default organizationnsentry cli defaults project my-proj # Set default projectnsentry cli defaults telemetry off # Disable telemetrynsentry cli defaults url https://... # Set Sentry URL (self-hosted)nsentry cli defaults headers 'X-IAP: t' # Set custom headers (self-hosted)nsentry cli defaults ca-cert /path/to/ca.pem # Trust a custom CA certificatensentry cli defaults org --clear # Clear a specific defaultnsentry cli defaults --clear --yes # Clear all defaultsn```nn## Recognized keysnn| Key | Description |n|-----|------------|n| `org` | Default organization slug |n| `project` | Default project slug |n| `telemetry` | Telemetry preference (on/off, yes/no, true/false, 1/0) |n| `url` | Sentry instance URL (for self-hosted installations) |n| `headers` | Custom HTTP headers for self-hosted proxies (semicolon-separated `Name: Value`) |n| `ca-cert` | Path to PEM file with custom CA certificates (for corporate proxies) |", + "flags": [ + { + "name": "clear", + "type": "boolean", + "description": "Clear the specified default, or all defaults if no key is given", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "key value", + "description": "Setting key and optional value", + "variadic": true + } + ] + }, + { + "command_path": "sentry cli feedback", + "brief": "Send feedback about the CLI", + "fullDescription": "Submit feedback about your experience with the Sentry CLI. All text after 'feedback' is sent as your message.", + "flags": [], + "positional_params": [ + { + "name": "message", + "description": "Your feedback message", + "variadic": true + } + ] + }, + { + "command_path": "sentry cli fix", + "brief": "Diagnose and repair CLI database issues", + "fullDescription": "Check the CLI's local SQLite database for schema, permission, and ownershipnissues and repair them.nnThis is useful when upgrading from older CLI versions, if the databasenbecomes inconsistent due to interrupted operations, or if file permissionsnprevent the CLI from writing to its local database.nnThe command performs non-destructive repairs only - it adds missing tablesnand columns, fixes file permissions, and transfers ownership — but neverndeletes data.nnIf files are owned by root (e.g. after `sudo brew install`), run with sudonto transfer ownership back to the current user:nn sudo sentry cli fixnnExamples:n sentry cli fix # Fix database issuesn sudo sentry cli fix # Fix root-owned filesn sentry cli fix --dry-run # Show what would be fixed without making changes", + "flags": [ + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would be fixed without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry cli import", + "brief": "Import settings from legacy .sentryclirc files", + "fullDescription": "Scan for .sentryclirc config files (used by the old Rust-based sentry-cli) and import their settings into the new CLI.nnImported settings:n - Auth token -> stored credentials (with proper host scoping)n - URL -> default Sentry instance URLn - Organization -> default organizationn - Project -> default projectnnSecurity: token and URL must come from the same file to be trusted.nCross-file URL requires explicit --url confirmation.nnExamples:n sentry cli import # Scan and import interactivelyn sentry cli import --yes # Auto-confirm (CI-safe)n sentry cli import --dry-run # Preview without changesn sentry cli import --url # Trust a specific URL", + "flags": [ + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "url", + "type": "parsed", + "description": "Explicitly trust this URL (bypasses same-file trust check)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "skip-validation", + "type": "boolean", + "description": "Skip token validation against the Sentry API", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry cli setup", + "brief": "Configure shell integration", + "fullDescription": "Sets up shell integration for the Sentry CLI:nn- Adds binary directory to PATH (if not already in PATH)n- Installs shell completions (bash, zsh, fish)n- Installs agent skills for detected AI coding assistantsn- Records installation metadata for upgradesnnWith --install, also handles binary placement from a temporaryndownload location (used by the install script and upgrade command).nnThis command is called automatically by the install script,nbut can also be run manually after downloading the binary.nnExamples:n sentry cli setup # Auto-detect and configuren sentry cli setup --method curl # Record install methodn sentry cli setup --install # Place binary and configuren sentry cli setup --no-modify-path # Skip PATH modificationn sentry cli setup --no-completions # Skip shell completionsn sentry cli setup --no-agent-skills # Skip agent skill installation", + "flags": [ + { + "name": "install", + "type": "boolean", + "description": "Install the binary from a temp location to the system path", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "method", + "type": "parsed", + "description": "Installation method (curl, npm, pnpm, bun, yarn)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "channel", + "type": "parsed", + "description": "Release channel to persist (stable or nightly)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-modify-path", + "type": "boolean", + "description": "Skip PATH modification", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "no-completions", + "type": "boolean", + "description": "Skip shell completion installation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "no-agent-skills", + "type": "boolean", + "description": "Skip agent skill installation for AI coding assistants", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "quiet", + "type": "boolean", + "description": "Suppress output (for scripted usage)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry cli uninstall", + "brief": "Uninstall Sentry CLI", + "fullDescription": "Remove the Sentry CLI binary, shell completions, PATH entries, agent skill files, and configuration directory. Reverses the changes made by `sentry cli setup`.", + "flags": [ + { + "name": "keep-config", + "type": "boolean", + "description": "Keep the config directory (~/.sentry) and auth tokens", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry cli upgrade", + "brief": "Update the Sentry CLI to the latest version", + "fullDescription": "Check for updates and upgrade the Sentry CLI to the latest or a specific version.nnBy default, detects how the CLI was installed (npm, curl, etc.) and uses the same method to upgrade.nnTwo release channels are supported:n stable (default) Latest stable releasen nightly Built from main, updated on every commitnnThe channel is persisted so that subsequent bare `sentry cli upgrade` callsnuse the same channel.nnExamples:n sentry cli upgrade # Update to latest (using persisted channel)n sentry cli upgrade nightly # Switch to nightly channel and updaten sentry cli upgrade stable # Switch back to stable channel and updaten sentry cli upgrade 0.5.0 # Install a specific stable versionn sentry cli upgrade --check # Check for updates without installingn sentry cli upgrade --force # Force re-download even if up to daten sentry cli upgrade --method npm # Force using npm to upgraden sentry cli upgrade --offline # Upgrade from cached patches (no network)", + "flags": [ + { + "name": "check", + "type": "boolean", + "description": "Check for updates without installing", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force upgrade even if already on the latest version", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "offline", + "type": "boolean", + "description": "Upgrade using only cached version info and patches (no network)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "method", + "type": "parsed", + "description": "Installation method to use (curl, brew, npm, pnpm, bun, yarn)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "version", + "description": "Specific version (e.g. 0.5.0), or \"nightly\"/\"stable\" to switch channel; omit to update within current channel", + "optional": true + } + ] + }, + { + "command_path": "sentry code-mappings upload", + "brief": "Upload code mappings for stack trace linking", + "fullDescription": "Bulk-upload code mappings (stack trace root → source code root) for a Sentry project. Code mappings link stack trace paths to source code paths in your repository, enabling source context, suspect commits, and stack trace linking.nnThe input file must be a JSON array of objects with `stackRoot` and `sourceRoot` fields.nnUsage:n sentry code-mappings upload mappings.jsonn sentry code-mappings upload mappings.json --repo owner/repon sentry code-mappings upload mappings.json --repo owner/repo --default-branch developn sentry code-mappings upload mappings.json --jsonnnRequires an Organization Token with `org:ci` scope.", + "flags": [ + { + "name": "repo", + "type": "parsed", + "description": "Repository name (e.g., owner/repo). Auto-detected from git remote if omitted.", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "default-branch", + "type": "parsed", + "description": "Default branch name. Auto-detected from git remote HEAD if omitted.", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "path", + "description": "Path to the code mappings JSON file" + } + ] + }, + { + "command_path": "sentry dart-symbol-map upload", + "brief": "Upload a Dart/Flutter symbol map to Sentry", + "fullDescription": "Upload a Dart/Flutter obfuscation map for deobfuscating Dart exception types. The map must be a JSON array of strings with an even number of entries (alternating obfuscated/original name pairs).nnA debug ID (--debug-id) is required to associate the map with its companion native debug file (dSYM/ELF). The sentry-dart-plugin extracts this automatically.nnUsage:n sentry dart-symbol-map upload --debug-id mapping.jsonn sentry dart-symbol-map upload --debug-id mapping.json --no-uploadn sentry dart-symbol-map upload --debug-id mapping.json --jsonnnSupported on Sentry SaaS and self-hosted >= 25.8.0.", + "flags": [ + { + "name": "debug-id", + "type": "parsed", + "description": "Debug ID (UUID) from the companion native debug file", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "no-upload", + "type": "boolean", + "description": "Validate the file without uploading (dry-run)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "path", + "description": "Path to the dart symbol map JSON file" + } + ] + }, + { + "command_path": "sentry dashboard create", + "brief": "Create a dashboard", + "fullDescription": "Create a new Sentry dashboard.nnExamples:n sentry dashboard create 'My Dashboard'n sentry dashboard create my-org/ 'My Dashboard'n sentry dashboard create my-org/my-project 'My Dashboard'nnAdd widgets after creation with:n sentry dashboard widget add \"My Widget\" --display line --query count", + "flags": [], + "positional_params": [ + { + "name": "org/project/title", + "description": "[] ", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard list", + "brief": "List dashboards", + "fullDescription": "List dashboards in a Sentry organization.nnThe optional name argument supports glob patterns for filtering by title.nGlob matching is case-insensitive. Quote patterns to prevent shell expansion.nnExamples:n sentry dashboard list # auto-detect orgn sentry dashboard list my-org/ # explicit orgn sentry dashboard list my-org/my-project # org from explicit projectn sentry dashboard list 'Error*' # filter by title globn sentry dashboard list my-org '*API*' # bare org + filtern sentry dashboard list my-org/ '*API*' # org/ + filtern sentry dashboard list -c next # next pagen sentry dashboard list -c prev # previous pagen sentry dashboard list --json # JSON with pagination envelopen sentry dashboard list --web", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of dashboards to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/title-filter", + "description": "[<org/project>] [<name-glob>]", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard restore", + "brief": "Restore a dashboard revision", + "fullDescription": "Restore a Sentry dashboard to a previous revision.nnUse `sentry dashboard revisions` to list available revisions first.nnExamples:n sentry dashboard restore 12345 --revision 42n sentry dashboard restore my-org 12345 --revision 42n sentry dashboard restore 'My Dashboard' --revision 42n sentry dashboard restore 12345 --revision 42 --json", + "flags": [ + { + "name": "revision", + "type": "parsed", + "description": "Revision ID to restore", + "hidden": false, + "optional": false, + "variadic": false + } + ], + "positional_params": [ + { + "name": "org/dashboard", + "description": "[<org/project>] <dashboard-id-or-title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard revisions", + "brief": "List dashboard revisions", + "fullDescription": "List revision history for a Sentry dashboard.nnShows saved revisions with their IDs, titles, authors, and timestamps.nUse `sentry dashboard restore` to revert to a previous revision.nnExamples:n sentry dashboard revisions 12345n sentry dashboard revisions 'My Dashboard'n sentry dashboard revisions my-org 12345n sentry dashboard revisions my-org 12345 --jsonn sentry dashboard revisions my-org 12345 -c next", + "flags": [ + { + "name": "cursor", + "type": "parsed", + "description": "Navigate pages: \"next\", \"prev\", \"first\" (or raw cursor string)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of revisions to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + } + ], + "positional_params": [ + { + "name": "org/dashboard", + "description": "[<org/project>] <dashboard-id-or-title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard view", + "brief": "View a dashboard", + "fullDescription": "View a Sentry dashboard with rendered widget data.nnFetches actual data for each widget and displays sparkline charts,ntables, and big numbers in the terminal.nnThe dashboard can be specified by numeric ID or title.nnExamples:n sentry dashboard view 12345n sentry dashboard view 'My Dashboard'n sentry dashboard view my-org 12345n sentry dashboard view my-org 'My Dashboard'n sentry dashboard view my-org/my-project 12345n sentry dashboard view 12345 --jsonn sentry dashboard view 12345 --period 7dn sentry dashboard view 12345 -rn sentry dashboard view 12345 -r 30n sentry dashboard view 12345 --web", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "refresh", + "type": "parsed", + "description": "Auto-refresh interval in seconds (default: 60, min: 10)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "60" + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "org/project/dashboard", + "description": "[<org/project>] <dashboard-id-or-title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard widget add", + "brief": "Add a widget to a dashboard", + "fullDescription": "Add a widget to an existing Sentry dashboard.nnThe dashboard can be specified by numeric ID or title.nnExamples:n sentry dashboard widget add 'My Dashboard' \"Error Count\" \\n --display big_number --query countnn sentry dashboard widget add 'My Dashboard' \"Errors by Browser\" \\n --display line --query count --group-by browser.namenn sentry dashboard widget add 'My Dashboard' \"Top Endpoints\" \\n --display table --query count --query p95:span.duration \\n --group-by transaction --sort -count --limit 10nnQuery shorthand (--query flag):n count → count() (bare name = no-arg aggregate)n p95:span.duration → p95(span.duration) (colon = function with arg)n count() → count() (parens passthrough)nnSort shorthand (--sort flag):n count → count() (ascending)n -count → -count() (descending)nnLayout flags (--col/-x, --row/-y, --width, --height) control widget positionnand size in the 6-column dashboard grid. Omitted values use auto-layout.", + "flags": [ + { + "name": "display", + "type": "parsed", + "description": "Display type (big_number, line, area, bar, table, stacked_area, top_n, text, categorical_bar, details, wheel, rage_and_dead_clicks, server_tree, agents_traces_table)", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "dataset", + "type": "parsed", + "description": "Widget dataset (default: spans). Accepts canonical names and API synonyms: spans, error-events/errors, transaction-like/transactions, tracemetrics/metrics, logs, issue, discover", + "hidden": false, + "optional": true, + "variadic": false, + "default": "spans). Accepts canonical names and API synonyms: spans" + }, + { + "name": "query", + "type": "parsed", + "description": "Aggregate expression (e.g. count, p95:span.duration)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "where", + "type": "parsed", + "description": "Search conditions filter (e.g. is:unresolved)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "group-by", + "type": "parsed", + "description": "Group-by column (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "sort", + "type": "parsed", + "description": "Order by (prefix - for desc, e.g. -count)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Result limit", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "col", + "type": "parsed", + "description": "Grid column position (0-based, 0–5)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "row", + "type": "parsed", + "description": "Grid row position (0-based)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "width", + "type": "parsed", + "description": "Widget width in grid columns (1–6)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "height", + "type": "parsed", + "description": "Widget height in grid rows (min 1)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "layout", + "type": "parsed", + "description": "Layout mode: sequential (append in order) or dense (fill gaps)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "sequential" + } + ], + "positional_params": [ + { + "name": "org/project/dashboard/title", + "description": "[<org/project>] <dashboard> <title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard widget delete", + "brief": "Delete a widget from a dashboard", + "fullDescription": "Remove a widget from an existing Sentry dashboard.nnThe dashboard can be specified by numeric ID or title.nIdentify the widget by --index (0-based) or --title.nnExamples:n sentry dashboard widget delete 12345 --index 0n sentry dashboard widget delete 'My Dashboard' --title 'Error Rate'n sentry dashboard widget delete 12345 --index 0 --dry-run", + "flags": [ + { + "name": "index", + "type": "parsed", + "description": "Widget index (0-based)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "title", + "type": "parsed", + "description": "Widget title to match", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/dashboard", + "description": "[<org/project>] <dashboard-id-or-title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry dashboard widget edit", + "brief": "Edit a widget in a dashboard", + "fullDescription": "Edit a widget in an existing Sentry dashboard.nnThe dashboard can be specified by numeric ID or title.nIdentify the widget by --index (0-based) or --title.nOnly provided flags are changed — omitted values are preserved.nnLayout flags (--col/-x, --row/-y, --width, --height) control widget positionnand size in the 6-column dashboard grid.nnExamples:n sentry dashboard widget edit 12345 --title 'Error Rate' --display barn sentry dashboard widget edit 'My Dashboard' --index 0 --query p95:span.durationn sentry dashboard widget edit 12345 --title 'Old Name' --new-title 'New Name'n sentry dashboard widget edit 12345 --index 0 --col 0 --row 0 --width 6 --height 2", + "flags": [ + { + "name": "index", + "type": "parsed", + "description": "Widget index (0-based)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "title", + "type": "parsed", + "description": "Widget title to match", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "new-title", + "type": "parsed", + "description": "New widget title", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "display", + "type": "parsed", + "description": "Display type (big_number, line, area, bar, table, stacked_area, top_n, text, categorical_bar, details, wheel, rage_and_dead_clicks, server_tree, agents_traces_table)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dataset", + "type": "parsed", + "description": "Widget dataset (default: spans). Accepts canonical names and API synonyms: spans, error-events/errors, transaction-like/transactions, tracemetrics/metrics, logs, issue, discover", + "hidden": false, + "optional": true, + "variadic": false, + "default": "spans). Accepts canonical names and API synonyms: spans" + }, + { + "name": "query", + "type": "parsed", + "description": "Aggregate expression (e.g. count, p95:span.duration)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "where", + "type": "parsed", + "description": "Search conditions filter (e.g. is:unresolved)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "group-by", + "type": "parsed", + "description": "Group-by column (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "sort", + "type": "parsed", + "description": "Order by (prefix - for desc, e.g. -count)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Result limit", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "col", + "type": "parsed", + "description": "Grid column position (0-based, 0–5)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "row", + "type": "parsed", + "description": "Grid row position (0-based)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "width", + "type": "parsed", + "description": "Widget width in grid columns (1–6)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "height", + "type": "parsed", + "description": "Widget height in grid rows (min 1)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "org/project/dashboard", + "description": "[<org/project>] <dashboard-id-or-title>", + "variadic": true + } + ] + }, + { + "command_path": "sentry debug-files bundle-jvm", + "brief": "Create a JVM source bundle for source context", + "fullDescription": "Create a JVM source bundle from a directory of Java, Kotlin, Scala, Groovy, or Clojure source files. The bundle is a ZIP archive that can be uploaded to Sentry for source context in JVM stack traces.nnThis command is local-only — it makes no network requests.", + "flags": [ + { + "name": "output", + "type": "parsed", + "description": "Output directory for the bundle ZIP", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "debug-id", + "type": "parsed", + "description": "Debug ID (UUID) to stamp on the bundle", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "exclude", + "type": "parsed", + "description": "Additional directory names to exclude (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + } + ], + "positional_params": [ + { + "name": "path", + "description": "Directory containing JVM source files" + } + ] + }, + { + "command_path": "sentry debug-files bundle-sources", + "brief": "Bundle a debug file's source files for source context", + "fullDescription": "Build a source bundle from the source files referenced by a debug information file. The bundle is a ZIP archive stamped with the object's debug id that can be uploaded to Sentry (debug-files upload) for source context in stack traces. Supports Mach-O/dSYM, ELF, PE/PDB, Portable PDB, WebAssembly, and Breakpad.nnSource files are read from the paths recorded in the debug info, so this is normally run on the build machine right after compiling. Referenced files that are not present locally are skipped. The format is auto-detected, and this command makes no network requests.nnUsage:n sentry debug-files bundle-sources ./libexample.son sentry debug-files bundle-sources ./app.pdb -o ./app.src.zipnnExits non-zero if no referenced source files are found on disk.", + "flags": [ + { + "name": "output", + "type": "parsed", + "description": "Output path for the source bundle ZIP (default: <path>.src.zip)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "<path>.src.zip)\"" + } + ], + "positional_params": [ + { + "name": "path", + "description": "Path to the debug information file" + } + ] + }, + { + "command_path": "sentry debug-files check", + "brief": "Inspect a debug information file", + "fullDescription": "Inspect a debug information file and print its debug id, code id, architecture, kind, and feature flags. Supports Mach-O/dSYM, ELF, PE/PDB, Portable PDB, WebAssembly, Breakpad, and source bundles.nnThe format is auto-detected. This command is local-only and makes no network requests.nnUsage:n sentry debug-files check ./libexample.son sentry debug-files check MyApp.dSYM/Contents/Resources/DWARF/MyAppn sentry debug-files check ./app.pdb --jsonnnExits non-zero if the file is not usable for symbolication.", + "flags": [], + "positional_params": [ + { + "name": "path", + "description": "Path to the debug information file" + } + ] + }, + { + "command_path": "sentry debug-files find", + "brief": "Locate debug files for given debug identifiers", + "fullDescription": "Locate debug-information files for one or more debug identifiers.nnSearches Xcode's DerivedData (for dSYMs), the current directory, and any extra `--path` directories, matching each file's embedded debug id against the requested ids. Local-only — no API calls.nnExits non-zero if any id could not be located.nnUsage:n sentry debug-files find <debug-id> [<debug-id>...]n sentry debug-files find <id> --type dsym --path ./buildn sentry debug-files find <id> --no-cwd --no-well-known -p /symbols", + "flags": [ + { + "name": "type", + "type": "parsed", + "description": "Only consider debug files of the given type (repeatable). Default: all", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "no-well-known", + "type": "boolean", + "description": "Do not look for debug files in well-known locations", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-cwd", + "type": "boolean", + "description": "Do not look for debug files in the current directory", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "path", + "type": "parsed", + "description": "Add a directory to search recursively (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + } + ], + "positional_params": [ + { + "name": "id", + "description": "Debug identifier(s) to search for", + "variadic": true + } + ] + }, + { + "command_path": "sentry debug-files print-sources", + "brief": "List the source files a debug file references", + "fullDescription": "List the source files referenced by a debug information file. For each referenced file it reports whether the source is embedded in the file, available via a source link, or present on the local disk — useful for checking what `bundle-sources` would include. Supports Mach-O/dSYM, ELF, PE/PDB, Portable PDB, and Breakpad.nnThe format is auto-detected. This command is local-only and makes no network requests.nnUsage:n sentry debug-files print-sources ./libexample.son sentry debug-files print-sources ./app.pdb --json", + "flags": [], + "positional_params": [ + { + "name": "path", + "description": "Path to the debug information file" + } + ] + }, + { + "command_path": "sentry debug-files upload", + "brief": "Upload debug information files to Sentry", + "fullDescription": "Scan files and directories for native debug information files and upload them to Sentry using the chunk-upload protocol. Supports Mach-O/dSYM, ELF, PE/PDB, Portable PDB, WebAssembly, Breakpad, and source bundles. Directories are scanned recursively.nnOrg/project are auto-detected from DSN, env vars, or config defaults.nnFilters:n --type Only upload files of the given type (repeatable):n dsym, elf, pe, pdb, portablepdb, wasm, breakpad,n sourcebundle, jvmn --id Only upload the object with the given debug id (repeatable)n --no-debug / --no-unwind / --no-sources Drop files whose onlyn useful feature is the named onen --derived-data Also scan Xcode's DerivedData folder (macOS only)n --no-zips Do not scan inside .zip archivesnn.zip archives are scanned in place by default; nested archives are not recursed.nnManaged PE assemblies (.NET) that embed a Portable PDB have it extracted and uploaded automatically as a separate <name>.pdb debug file.nnWith --il2cpp-mapping, Unity IL2CPP C++->C# line mappings are computed from each file's referenced generated C++ sources and uploaded as separate il2cpp debug files; combine with --include-sources to also bundle the referenced C# source files.nnUsage:n sentry debug-files upload ./buildn sentry debug-files upload ./symbols.zipn sentry debug-files upload ./libexample.so --include-sourcesn sentry debug-files upload ./dsyms --type dsym --waitn sentry debug-files upload ./build --il2cpp-mapping --include-sourcesn sentry debug-files upload --derived-data --no-uploadn sentry debug-files upload ./build --no-zips --no-uploadnnBCSymbolMap resolution (legacy --symbol-maps) is not supported: it only applies to Apple Bitcode, which Apple has deprecated. Use the legacy Rust sentry-cli if you still need it.", + "flags": [ + { + "name": "type", + "type": "parsed", + "description": "Only upload files of this type (repeatable): dsym, elf, pe, pdb, portablepdb, wasm, breakpad, sourcebundle, jvm", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "id", + "type": "parsed", + "description": "Only upload the object with this debug id (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "require-all", + "type": "boolean", + "description": "Fail if any --id value was not found among scanned files", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-debug", + "type": "boolean", + "description": "Do not upload files whose only feature is debug/symbol info", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-unwind", + "type": "boolean", + "description": "Do not upload files whose only feature is unwind info", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-sources", + "type": "boolean", + "description": "Do not upload files whose only feature is source info", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "include-sources", + "type": "boolean", + "description": "Build and upload a source bundle for each file with debug info", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "il2cpp-mapping", + "type": "boolean", + "description": "Compute and upload Unity IL2CPP line mappings for each scanned file", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "derived-data", + "type": "boolean", + "description": "Also scan Xcode's DerivedData folder (macOS only)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-zips", + "type": "boolean", + "description": "Do not scan inside .zip archives", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-upload", + "type": "boolean", + "description": "Scan and print what would be uploaded without uploading", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "wait", + "type": "boolean", + "description": "Wait for server-side processing and report any errors", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "wait-for", + "type": "parsed", + "description": "Wait up to this many seconds for server-side processing", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "path", + "description": "Files or directories to scan for debug information files", + "variadic": true + } + ] + }, + { + "command_path": "sentry event list", + "brief": "List events for an issue", + "fullDescription": "List events belonging to a Sentry issue.nnIssue formats:n @latest - Most recent unresolved issuen @most_frequent - Issue with highest event frequencyn <org>/ID - Explicit org: sentry/EXTENSION-7n <project>-suffix - Project + suffix: cli-Gn ID - Short ID: CLI-Gn numeric - Numeric ID: 123456789nnExamples:n sentry event list CLI-Gn sentry event list @latest --limit 50n sentry event list 123456789 --fulln sentry event list CLI-G -q \"user.email:foo@bar.com\"n sentry event list CLI-G --json", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry event send", + "brief": "Send a Sentry event", + "fullDescription": "\\\nSend a Sentry event to the ingest pipeline using DSN-based authentication.\n\nNo login required — provide a DSN via --dsn or the SENTRY_DSN environment variable.\n\n## Building an event from flags\n\n\\", + "flags": [ + { + "name": "dsn", + "type": "parsed", + "description": "DSN to send events to (overrides SENTRY_DSN env var)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "message", + "type": "parsed", + "description": "Event message (repeat for multi-line)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "message-arg", + "type": "parsed", + "description": "Arguments for message template (repeat for multiple)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "level", + "type": "enum", + "description": "Event severity level", + "hidden": false, + "optional": true, + "variadic": false, + "default": "error" + }, + { + "name": "release", + "type": "parsed", + "description": "Release version", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dist", + "type": "parsed", + "description": "Distribution identifier", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "env", + "type": "parsed", + "description": "Environment name (e.g. production, staging)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "platform", + "type": "parsed", + "description": "Platform identifier (default: other)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "other)\"" + }, + { + "name": "tag", + "type": "parsed", + "description": "Tag as KEY:VALUE (repeat for multiple)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "extra", + "type": "parsed", + "description": "Extra data as KEY:VALUE (repeat for multiple)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "user", + "type": "parsed", + "description": "User info as KEY:VALUE — id, email, username, ip_address, or custom", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "fingerprint", + "type": "parsed", + "description": "Custom fingerprint part (repeat for multiple)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "timestamp", + "type": "parsed", + "description": "Event timestamp (Unix epoch, ISO 8601, or RFC 2822)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-environ", + "type": "boolean", + "description": "Do not include environment variables in the event", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "logfile", + "type": "parsed", + "description": "Path to a log file — last 100 lines are attached as breadcrumbs", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "with-categories", + "type": "boolean", + "description": "Parse 'CATEGORY: message' prefixes from logfile breadcrumbs", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "raw", + "type": "boolean", + "description": "Send file contents as-is without parsing", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "args", + "description": "Path(s) to JSON event file(s) to send", + "variadic": true + } + ] + }, + { + "command_path": "sentry event view", + "brief": "View details of one or more events", + "fullDescription": "View detailed information about Sentry events by their IDs.nnTarget specification:n sentry event view <event-id> # auto-detect from DSN or confign sentry event view <org>/<proj> <event-id> [<id>...] # explicit org and projectn sentry event view <project> <event-id> [<id>...] # find project across all orgsnnMultiple event IDs can be passed as separate arguments or newline-separatednwithin a single argument (handy when piping from other commands).", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/event-id", + "description": "[<org>/<project>] <event-id> [<event-id>...] - Target (optional) and one or more event IDs", + "variadic": true + } + ] + }, + { + "command_path": "sentry explore", + "brief": "Query aggregate event data (Explore)", + "fullDescription": "Query the Sentry Explore API for aggregate event data.nnSupports arbitrary fields including columns (title, project),naggregates (count(), count_unique(user), p50(transaction.duration)),nand equations. Results are returned as a table.nnDatasets:n errors Error events (default)n spans Span datan metrics Custom metrics (tracemetrics format)n logs Log entriesn replays Session replay searchnnTargets:n <org>/<project> Filter by project (auto-adds project:<slug> to query)n <org>/ All projects in orgn <project> Bare slug — searches across orgsn (omitted) Auto-detect from DSN/confignnExamples:n sentry explore my-org/cli -F title -F \"count()\"n sentry explore my-org/ -F title -F \"count()\" -F \"count_unique(user)\" --period 1hn sentry explore my-org/cli -F span.op -F \"p50(span.duration)\" --dataset spansn sentry explore my-org/cli --dataset replays -F id -F user.email -F count_errorsn sentry explore -F span.op -F \"count()\" --dataset spans --period 1hn sentry explore --jsonnnMetrics (auto mode — resolves type/unit automatically):n sentry explore my-org/ -m llm.token_usage --dataset metricsn sentry explore my-org/seer -F gen_ai.request.model -m llm.token_usage --dataset metrics --period 7dn sentry explore my-org/ -m cache.hit_rate --agg avg --dataset metrics", + "flags": [ + { + "name": "field", + "type": "parsed", + "description": "API field or aggregate (repeatable). E.g., title, \"count()\", \"p50(transaction.duration)\"", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "metric", + "type": "parsed", + "description": "Metric name for --dataset metrics. Auto-resolves type/unit via API.", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "agg", + "type": "parsed", + "description": "Aggregation for --metric (sum, avg, count, p50, p95, etc.)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "sum" + }, + { + "name": "dataset", + "type": "parsed", + "description": "Dataset to query (${[...VALID_DATASETS].join(\", \")})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_DATASET" + }, + { + "name": "query", + "type": "parsed", + "description": "Search query (Sentry search syntax)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort field (prefix with - for desc, e.g., \"-count()\")", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "environment", + "type": "parsed", + "description": "Replay environment filter for --dataset replays (repeatable, comma-separated)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "limit", + "type": "parsed", + "description": "Number of rows (1-${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_PERIOD" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "Target: <org>/<project>, <org>/, or <project>. Auto-detected if omitted.", + "optional": true + } + ] + }, + { + "command_path": "sentry feedback list", + "brief": "List and search User Feedback", + "fullDescription": "List modern User Feedback captured by Sentry. Feedback is queried from the issue index with a mandatory category filter.nnTarget patterns:n sentry feedback list # auto-detect organizationn sentry feedback list <org>/ # all projects in an organizationn sentry feedback list <org>/<proj> # one projectn sentry feedback list <project> # find project across organizationsnn${targetPatternExplanation()}\\n\\nMailboxes:n unresolved Inbox feedback (default)n resolved Resolved feedbackn spam Feedback marked as spamn all All feedback statuses", + "flags": [ + { + "name": "status", + "type": "enum", + "description": "Mailbox: unresolved, resolved, spam, or all", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_STATUS" + }, + { + "name": "limit", + "type": "parsed", + "description": "Number of feedback items (${LIST_MIN_LIMIT}-${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(LIST_DEFAULT_LIMIT)" + }, + { + "name": "query", + "type": "parsed", + "description": "Search query (Sentry issue search syntax)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_PERIOD" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project", + "description": "<org>/, <org>/<project>, or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry feedback view", + "brief": "View a User Feedback item", + "fullDescription": "View modern User Feedback by ID or select the most recent unresolved Feedback with @latest. The latest event, linked error, Session Replays, and attachment metadata are included when available.nnFeedback formats:n @latest Most recent unresolved Feedbackn <org>/@latest Most recent unresolved Feedback in an organizationn <short-id> Search accessible organizationsn <numeric-id> Resolve by numeric issue IDn <org>/<short-id> Explicit organizationn <org>/<project>/<suffix> Explicit organization and projectnnThe resolved issue must have issue.category:feedback. Use 'sentry issue view' for other issue categories.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry help", + "brief": "Display help for a command", + "fullDescription": "Display help information. Run 'sentry help' for an overview, or 'sentry help <command>' for detailed help on a specific command. Use --json for machine-readable output suitable for AI agents.", + "flags": [], + "positional_params": [ + { + "name": "command", + "description": "Command to get help for", + "variadic": true + } + ] + }, + { + "command_path": "sentry info", + "brief": "Print configuration and verify authentication", + "fullDescription": "Print the resolved Sentry server URL and default organization/project, and verify authentication against the server.nnUse `--config-status-json` for a machine-readable status dump (for external tooling); it always exits 0. Use `--no-defaults` to verify only authentication, without requiring a default org/project.", + "flags": [ + { + "name": "config-status-json", + "type": "boolean", + "description": "Emit configuration + auth status as JSON (for external tooling); always exits 0", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-defaults", + "type": "boolean", + "description": "Verify only authentication, without requiring a default org/project", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [] + }, + { + "command_path": "sentry init", + "brief": "Initialize Sentry in your project (experimental)", + "fullDescription": "EXPERIMENTAL: This command may modify your source files.nnRuns the Sentry setup wizard to detect your project's framework, install the SDK, and configure Sentry.nnSupports org/project syntax and a directory positional. Path-likenarguments (starting with . / ~) are treated as the directory;neverything else is treated as the target.nnExamples:n sentry initn sentry init acme/n sentry init acme/my-appn sentry init my-appn sentry init acme/my-app ./my-projectn sentry init ./my-project", + "flags": [ + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "features", + "type": "parsed", + "description": "Features to enable: errors,tracing,logs,replay,metrics,profiling,sourcemaps,crons,ai-monitoring,user-feedback", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "team", + "type": "parsed", + "description": "Team slug to create the project under", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "app", + "type": "parsed", + "description": "App to initialize in a monorepo (required with --yes when multiple apps are detected)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "tui", + "type": "boolean", + "description": "Use the Ink-based interactive UI (default). Pass --no-tui to fall back to plain log output.", + "hidden": false, + "optional": false, + "variadic": false, + "default": "true" + } + ], + "positional_params": [ + { + "name": "target", + "description": "<org>/<project>, <org>/, <project>, or a directory path", + "optional": true + }, + { + "name": "directory", + "description": "Project directory (default: current directory)", + "optional": true + } + ] + }, + { + "command_path": "sentry issue archive", + "brief": "Archive (ignore) an issue", + "fullDescription": "Archive an issue, suppressing alerts until an optional condition is met.nnWithout --until, the issue is archived forever (equivalent to 'Archive Forever'nin the Sentry UI). Use --until to control when the issue automatically unarchives.nnModes:n (no --until) Archive forever — fully silenced, no automatic unarchivaln --until auto Smart detection — unarchives when Sentry detects a spike inn event frequency (recommended for most use cases)n --until <time> Duration-based — unarchives after a fixed time periodn --until <N>x Count-based — unarchives after N more events occurn --until <N>u User-based — unarchives after N more users are affectednnTime formats: 30m (minutes), 1h (hours), 7d (days), 1w (weeks),n or ISO dates like 2026-12-31nnCompound conditions — add a time window with /:n --until 10x/5m Unarchive when 10 events occur within 5 minutesn --until 5u/1h Unarchive when 5 users are affected within 1 hournnVerbose forms are also accepted: 10events, 10users, 30minutes, 2hours, 7daysnnExamples:n sentry issue archive CLI-12Z # Archive forevern sentry issue archive CLI-12Z --until auto # Smart spike detectionn sentry issue archive CLI-12Z -u auto # Same (short alias)n sentry issue archive CLI-12Z --until 1h # Archive for 1 hourn sentry issue archive CLI-12Z --until 7d # Archive for 7 daysn sentry issue archive CLI-12Z --until 100x # Until 100 more eventsn sentry issue archive CLI-12Z --until 100x/1h # 100 events within 1 hourn sentry issue archive CLI-12Z --until 10u/1d # 10 users within 1 dayn sentry issue ignore CLI-12Z --until auto # 'ignore' alias works too", + "flags": [ + { + "name": "until", + "type": "parsed", + "description": "Condition for unarchival: forever, auto, 30m, 10x, 10u, 10x/5m, etc.", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [] + }, + { + "command_path": "sentry issue events", + "brief": "List events for a specific issue", + "fullDescription": "List events belonging to a Sentry issue.nnIssue formats:n @latest - Most recent unresolved issuen @most_frequent - Issue with highest event frequencyn <org>/ID - Explicit org: sentry/EXTENSION-7n <project>-suffix - Project + suffix: cli-Gn ID - Short ID: CLI-Gn numeric - Numeric ID: 123456789nnExamples:n sentry issue events CLI-Gn sentry issue events @latest --limit 50n sentry issue events 123456789 --fulln sentry issue events CLI-G -q \"user.email:foo@bar.com\"n sentry issue events CLI-G --json", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry issue explain", + "brief": "Analyze an issue's root cause using Seer AI", + "fullDescription": "Get a root cause analysis for a Sentry issue using Seer AI.nnThis command analyzes the issue and provides:n - Identified root causesn - Reproduction stepsn - Relevant code locationsnnThe analysis may take a few minutes for new issues.nUse --force to trigger a fresh analysis even if one already exists.nnIssue formats:n @latest - Most recent unresolved issuen @most_frequent - Issue with highest event frequencyn <org>/ID - Explicit org: sentry/EXTENSION-7, sentry/cli-Gn <org>/@selector - Selector with org: my-org/@latestn <project>-suffix - Project + suffix: cli-G, spotlight-electron-4Yn ID - Short ID: CLI-G (searches across orgs)n suffix - Suffix only: G (requires DSN context)n numeric - Numeric ID: 123456789nnExamples:n sentry issue explain @latestn sentry issue explain 123456789n sentry issue explain sentry/EXTENSION-7n sentry issue explain cli-Gn sentry issue explain 123456789 --jsonn sentry issue explain 123456789 --force", + "flags": [ + { + "name": "force", + "type": "boolean", + "description": "Force new analysis even if one exists", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry issue list", + "brief": "List issues in a project", + "fullDescription": "List issues from Sentry projects.nnTarget patterns:n sentry issue list # auto-detect from DSN or confign sentry issue list <org>/<proj> # explicit org and projectn sentry issue list <org>/ # all projects in org (trailing / required)n sentry issue list <project> # find project across all orgsnn${targetPatternExplanation()}\\n\\nIn monorepos with multiple Sentry projects, shows issues from all detected projects.nnThe --limit flag specifies the total number of issues to display (max 1000). When multiple projects are detected, the limit is distributed evenly across them. Projects with fewer issues than their share give their surplus to others. Use --cursor / -c next / -c prev to paginate through larger result sets.nnBy default, only issues with activity in the last 90 days are shown. Use --period to adjust (e.g. --period 24h, --period 14d).nnQuery syntax (--query flag):n Terms are space-separated and implicitly ANDed together.n AND/OR operators are NOT supported. Use alternatives:n key:[val1,val2] # in-list: matches val1 OR val2 for one keyn *term* # wildcard matchingn Filters: key:value, !key:value (negation), key:>N, key:<Nn Quoted: message:\"exact phrase with spaces\"n Built-in: is:unresolved, is:resolved, assigned:me, has:usern Dates: age:-24h (last 24h), firstSeen:+7d (older than 7d)n Docs: https://docs.sentry.io/concepts/search/nnAlias: `sentry issues` → `sentry issue list`", + "flags": [ + { + "name": "query", + "type": "parsed", + "description": "Search query (Sentry syntax, implicit AND, no OR operator)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort by: recommended, date, new, freq, user (default: recommended on sentry.io, else date)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "recommended on sentry.io" + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": false, + "variadic": false, + "default": "90d" + }, + { + "name": "cursor", + "type": "parsed", + "description": "Pagination cursor (use \"next\" for next page, \"prev\" for previous)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "compact", + "type": "boolean", + "description": "Single-line rows for compact output (auto-detects if omitted)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of issues to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "<org>/<project>, auto-detected project, or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry issue merge", + "brief": "Merge 2+ issues into a single canonical group", + "fullDescription": "Consolidate multiple issues into one. Useful when the same logicalnerror was split into separate groups (e.g. by Sentry's defaultnstack-trace grouping before fingerprint rules were applied).nnSentry picks the canonical parent based on event count — typicallynthe largest group. --into is a preference, not a guarantee: if yournchoice has fewer events, Sentry may still pick a different parent,nin which case a warning is printed to stderr.nnAll issues must belong to the same organization. Only error-typenissues can be merged (the API rejects performance/info issues).nnExamples:n sentry issue merge CLI-K9 CLI-15H CLI-15Nn sentry issue merge CLI-K9 CLI-15H --into CLI-K9n sentry issue merge my-org/CLI-AB my-org/CLI-CD", + "flags": [ + { + "name": "into", + "type": "parsed", + "description": "Prefer this issue as the canonical parent (included in the merge if not already listed)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "issue", + "description": "Issue IDs to merge (2 or more required)", + "variadic": true + } + ] + }, + { + "command_path": "sentry issue plan", + "brief": "Generate a solution plan using Seer AI", + "fullDescription": "Generate a solution plan for a Sentry issue using Seer AI.nnThis command automatically runs root cause analysis if needed, then generates a solution plan with specific implementation steps to fix the issue.nnUse --force to regenerate a plan even if one already exists.nnIssue formats:n @latest - Most recent unresolved issuen @most_frequent - Issue with highest event frequencyn <org>/ID - Explicit org: sentry/EXTENSION-7, sentry/cli-Gn <org>/@selector - Selector with org: my-org/@latestn <project>-suffix - Project + suffix: cli-G, spotlight-electron-4Yn ID - Short ID: CLI-G (searches across orgs)n suffix - Suffix only: G (requires DSN context)n numeric - Numeric ID: 123456789nnPrerequisites:n - GitHub integration configured for your organizationn - Code mappings set up for your projectnnExamples:n sentry issue plan @latestn sentry issue plan 123456789n sentry issue plan sentry/EXTENSION-7n sentry issue plan cli-Gn sentry issue plan 123456789 --force", + "flags": [ + { + "name": "force", + "type": "boolean", + "description": "Force new plan even if one exists", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry issue resolve", + "brief": "Mark an issue as resolved", + "fullDescription": "Resolve an issue, optionally tied to a release or commit.nnResolution spec (--in / -i):n${RESOLVE_NEXT_RELEASE_SENTINEL} Resolve in the next release (tied to HEAD)\\n${RESOLVE_COMMIT_SENTINEL} Resolve in the current git HEAD — auto-detects repo\\n${RESOLVE_COMMIT_EXPLICIT_PREFIX}<repo>@<sha> Resolve in an explicit repo + commit (repo must be registered in Sentry)\\n <version> Resolve in this specific release (e.g., 0.26.1, spotlight@1.2.3)n (omitted) Resolve immediately (no regression tracking)nn@commit auto-detection requires a git repository whose 'origin' remotenmaps to a Sentry-registered repo. The command errors out clearly if anynpart of the detection fails — use the explicit form to override.nnExamples:n sentry issue resolve CLI-12Zn sentry issue resolve CLI-12Z --in 0.26.1n sentry issue resolve CLI-196 --in @nextn sentry issue resolve CLI-XX --in @commitn sentry issue resolve CLI-XX -i @commit:getsentry/cli@abc123n sentry issue resolve my-org/CLI-AB", + "flags": [ + { + "name": "in", + "type": "parsed", + "description": "Resolve in a release, next release, or commit ('<version>' | '${RESOLVE_NEXT_RELEASE_SENTINEL}' | '${RESOLVE_COMMIT_SENTINEL}' | '${RESOLVE_COMMIT_EXPLICIT_PREFIX}<repo>@<sha>')", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [] + }, + { + "command_path": "sentry issue unresolve", + "brief": "Reopen a resolved issue", + "fullDescription": "Mark an issue as unresolved. Inverse of `sentry issue resolve`.nnExamples:n sentry issue unresolve CLI-12Zn sentry issue reopen CLI-12Zn sentry issue unresolve my-org/CLI-AB", + "flags": [], + "positional_params": [] + }, + { + "command_path": "sentry issue view", + "brief": "View details of a specific issue", + "fullDescription": "View detailed information about a Sentry issue by its ID or short ID. The latest event is automatically included for full context.nnIssue formats:n @latest - Most recent unresolved issuen @most_frequent - Issue with highest event frequencyn <org>/ID - Explicit org: sentry/EXTENSION-7, sentry/cli-Gn <org>/@selector - Selector with org: my-org/@latestn <project>-suffix - Project + suffix: cli-G, spotlight-electron-4Yn ID - Short ID: CLI-G (searches across orgs)n suffix - Suffix only: G (requires DSN context)n numeric - Numeric ID: 123456789n org/project#ID - GitHub-style: my-org/my-project#PROJ-123nnIn multi-project mode (after 'issue list'), use alias-suffix format (e.g., 'f-g' where 'f' is the project alias shown in the list).", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry local run", + "brief": "Run a command with the local dev server enabled", + "fullDescription": "Run a command with the SENTRY_SPOTLIGHT environment variableninjected so the Sentry SDK automatically sends envelopes to thenlocal server.nnIf no server is already listening on the port, one is startednautomatically and shut down when the child process exits.nnThe child process inherits all current env vars plusnSENTRY_SPOTLIGHT (server-side SDKs read this automatically), thenframework-prefixed client variants (NEXT_PUBLIC_, VITE_, etc.), andnSENTRY_TRACES_SAMPLE_RATE=1.nnExample:n sentry local run -- npm run devn sentry local run -- python manage.py runserver", + "flags": [ + { + "name": "port", + "type": "parsed", + "description": "Port for the local server (default ${DEFAULT_PORT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(DEFAULT_PORT)" + }, + { + "name": "host", + "type": "parsed", + "description": "Hostname for the local server (default localhost)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "localhost" + }, + { + "name": "verify", + "type": "boolean", + "description": "Verify SDK sends events, then exit", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "timeout", + "type": "parsed", + "description": "Kill the child after N seconds (0 = no timeout; defaults to 30 s in --verify mode)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "0" + } + ], + "positional_params": [ + { + "name": "command", + "description": "Command to run", + "variadic": true + } + ] + }, + { + "command_path": "sentry local server", + "brief": "Start the local dev server and tail events", + "fullDescription": "Start a local development server that captures envelopes fromnSentry SDKs in your dev stack and tails them to the terminal.nnIf a server is already listening on the port, the command connectsnas an SSE consumer and tails events from it. Otherwise it startsnits own server.nnPress Ctrl-C to stop.", + "flags": [ + { + "name": "port", + "type": "parsed", + "description": "Port to listen on (default ${DEFAULT_PORT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(DEFAULT_PORT)" + }, + { + "name": "host", + "type": "parsed", + "description": "Hostname to bind to (default localhost)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "localhost" + }, + { + "name": "quiet", + "type": "boolean", + "description": "Suppress per-envelope tail output", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "filter", + "type": "parsed", + "description": "Only show items of this type (repeatable: error, transaction, log, ai)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "format", + "type": "parsed", + "description": "Output format: human (default) or json (NDJSON)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "human" + }, + { + "name": "attributes", + "type": "boolean", + "description": "Show a grouped attribute table (user vs SDK) under each transaction", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry log list", + "brief": "List logs from a project", + "fullDescription": "List and stream logs from Sentry projects.nnTarget patterns:n sentry log list # auto-detect from DSN or confign sentry log list <org>/<proj> # explicit org and projectn sentry log list <project> # find project across all orgsnn${TARGET_PATTERN_NOTE}\\n\\nTrace filtering:n sentry log list <trace-id> # Filter by trace (auto-detect org)n sentry log list <org>/<trace-id> # Filter by trace (explicit org)nnExamples:n sentry log list # List last 100 logsn sentry log list -f # Stream logs (2s poll interval)n sentry log list -f 5 # Stream logs (5s poll interval)n sentry log list --limit 50 # Show last 50 logsn sentry log list -q 'severity:error' # Filter to errors onlyn sentry log list abc123def456abc123def456abc123de # Filter by tracennAlias: `sentry logs` → `sentry log list`", + "flags": [ + { + "name": "limit", + "type": "parsed", + "description": "Number of log entries (${LIST_MIN_LIMIT}-${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "100" + }, + { + "name": "query", + "type": "parsed", + "description": "Filter query (e.g., \"severity:error\", \"project:backend\", \"project:[a,b]\")", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "follow", + "type": "parsed", + "description": "Stream logs (optionally specify poll interval in seconds)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort order: \"newest\" (default) or \"oldest\"", + "hidden": false, + "optional": false, + "variadic": false, + "default": "newest" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project-or-trace-id", + "description": "[<org>/[<project>/]]<trace-id>, <org>/<project>, or <project>", + "variadic": true + } + ] + }, + { + "command_path": "sentry log view", + "brief": "View details of one or more log entries", + "fullDescription": "View detailed information about Sentry log entries by their IDs.nnTarget specification:n sentry log view <log-id> # auto-detect from DSN or confign sentry log view <org>/<proj> <log-id> [<id>...] # explicit org and projectn sentry log view <project> <log-id> [<id>...] # find project across all orgsnnMultiple log IDs can be passed as separate arguments or newline-separatednwithin a single argument (handy when piping from other commands).nnThe log ID is the 32-character hexadecimal identifier shown in log listings.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/log-id", + "description": "[<org>/<project>] <log-id> [<log-id>...] - Target (optional) and one or more log IDs", + "variadic": true + } + ] + }, + { + "command_path": "sentry monitor list", + "brief": "List cron monitors", + "fullDescription": "List cron monitors in an organization.nnTarget specification:n sentry monitor list # auto-detect from DSN or confign sentry monitor list <org>/ # list all monitors in org (paginated)n sentry monitor list <org>/<proj> # list monitors in org (project context)n sentry monitor list <org> # list monitors in orgnnPagination:n sentry monitor list <org>/ -c next # fetch next pagen sentry monitor list <org>/ -c prev # fetch previous pagennExamples:n sentry monitor list # auto-detect or list alln sentry monitor list my-org/ # list monitors in my-org (paginated)n sentry monitor list --limit 10n sentry monitor list --jsonnnAlias: `sentry monitors` → `sentry monitor list`", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry monitor run", + "brief": "Wrap a command with cron monitor check-ins", + "fullDescription": "\\\nRun a command and report its execution to a Sentry cron monitor.\n\nAn \\", + "flags": [ + { + "name": "dsn", + "type": "parsed", + "description": "DSN to send check-ins to (overrides SENTRY_DSN env var)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "environment", + "type": "parsed", + "description": "Environment of the monitor", + "hidden": false, + "optional": false, + "variadic": false, + "default": "production" + }, + { + "name": "schedule", + "type": "parsed", + "description": "Upsert the monitor with this crontab schedule (e.g. '0 * * * *')", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "check-in-margin", + "type": "parsed", + "description": "Minutes after the expected check-in before it is missed (requires --schedule)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "max-runtime", + "type": "parsed", + "description": "Minutes a check-in may run before timing out (requires --schedule)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "timezone", + "type": "parsed", + "description": "Timezone of the schedule, tz database string (requires --schedule)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "failure-issue-threshold", + "type": "parsed", + "description": "Consecutive failures before an issue is created (requires --schedule)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "recovery-threshold", + "type": "parsed", + "description": "Consecutive successes before an issue is resolved (requires --schedule)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "monitor-slug command", + "description": "Monitor slug followed by the command to run", + "variadic": true + } + ] + }, + { + "command_path": "sentry org list", + "brief": "List organizations", + "fullDescription": "List organizations that you have access to.nnExamples:n sentry org listn sentry org list --limit 10n sentry org list --jsonnnAlias: `sentry orgs` → `sentry org list`", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of organizations to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry org view", + "brief": "View details of an organization", + "fullDescription": "View detailed information about a Sentry organization.nnThe organization is resolved from:n 1. Positional argument <org-slug>n 2. Config defaultsn 3. SENTRY_DSN environment variable or source code detection", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org", + "description": "Organization slug (optional if auto-detected)", + "optional": true + } + ] + }, + { + "command_path": "sentry proguard upload", + "brief": "Upload ProGuard/R8 mapping files to Sentry", + "fullDescription": "Upload one or more ProGuard/R8 mapping files to Sentry using the chunk-upload protocol. Each mapping is identified by a deterministic UUID derived from its content.nnOrg/project are auto-detected from DSN, env vars, or config defaults.nnUsage:n sentry proguard upload mapping.txtn sentry proguard upload build/mapping1.txt build/mapping2.txtn sentry proguard upload mapping.txt --uuid 5db7294d-87fc-5726-a5c0-4a90679657a5n sentry proguard upload mapping.txt --no-uploadn sentry proguard upload mapping.txt --json", + "flags": [ + { + "name": "uuid", + "type": "parsed", + "description": "Force a specific UUID instead of computing from file content (only valid with a single file)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-upload", + "type": "boolean", + "description": "Compute and print UUIDs without uploading (dry-run)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "require-one", + "type": "boolean", + "description": "Require at least one mapping file (error if none provided)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "path", + "description": "Paths to ProGuard/R8 mapping files", + "variadic": true + } + ] + }, + { + "command_path": "sentry proguard uuid", + "brief": "Compute the UUID for a ProGuard mapping file", + "fullDescription": "Compute and print the UUID of a ProGuard/R8 mapping file. The UUID is deterministically derived from the file contents and matches the value assigned by `sentry proguard upload`.nnUsage:n sentry proguard uuid ./app/build/outputs/mapping/release/mapping.txtn sentry proguard uuid mapping.txt --json", + "flags": [], + "positional_params": [ + { + "name": "path", + "description": "Path to the ProGuard mapping file" + } + ] + }, + { + "command_path": "sentry project create", + "brief": "Create a new project", + "fullDescription": "Create a new Sentry project in an organization.nnThe name supports org/name syntax to specify the organization explicitly.nIf omitted, the org is auto-detected from config defaults.nnProjects are created under a team. If the org has one team, it is usednautomatically. If no teams exist, one is created. Otherwise, specify --team.nnExamples:n sentry project create my-app noden sentry project create acme-corp/my-app javascript-nextjsn sentry project create my-app python-django --team backendn sentry project create my-app go --json", + "flags": [ + { + "name": "team", + "type": "parsed", + "description": "Team to create the project under", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "name", + "description": "Project name (supports org/name syntax)", + "optional": true + }, + { + "name": "platform", + "description": "Project platform (e.g., node, python, javascript-nextjs)", + "optional": true + } + ] + }, + { + "command_path": "sentry project delete", + "brief": "Delete a project", + "fullDescription": "Permanently delete a Sentry project. This action cannot be undone.nnRequires explicit target — auto-detection is disabled for safety.nnExamples:n sentry project delete acme-corp/my-appn sentry project delete my-appn sentry project delete acme-corp/my-app --yesn sentry project delete acme-corp/my-app --forcen sentry project delete acme-corp/my-app --dry-run", + "flags": [ + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project", + "description": "<org>/<project> or <project> (search across orgs)" + } + ] + }, + { + "command_path": "sentry project list", + "brief": "List projects", + "fullDescription": "List projects in an organization.nnTarget patterns:n sentry project list # auto-detect from DSN or confign sentry project list <org>/ # all projects in org (paginated)n sentry project list <org>/<proj> # show specific projectn sentry project list <project> # find project across all orgsnn${targetPatternExplanation(\"Cursor pagination (--cursor) requires the <org>/ form.\")}\\n\\nPagination:n sentry project list <org>/ -c next # next pagen sentry project list <org>/ -c prev # previous pagen sentry project list <org>/ -c <cursor> # resume at specific cursornnFiltering and output:n sentry project list --platform javascript # filter by platformn sentry project list --limit 50 # show more resultsn sentry project list --json # output as JSONnnAlias: `sentry projects` → `sentry project list`", + "flags": [ + { + "name": "platform", + "type": "parsed", + "description": "Filter by platform (e.g., javascript, python)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of projects to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "<org>/<project>, auto-detected project, or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry project view", + "brief": "View details of a project", + "fullDescription": "View detailed information about Sentry projects.nnTarget patterns:n sentry project view # auto-detect from DSN or confign sentry project view <org>/<project> # explicit org and projectn sentry project view <project> # find project across all orgsnn${TARGET_PATTERN_NOTE}\\n\\nIn monorepos with multiple Sentry projects, shows details for all detected projects.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project", + "description": "<org>/<project>, <project> (search), or omit for auto-detect", + "optional": true + } + ] + }, + { + "command_path": "sentry react-native gradle", + "brief": "Upload a React Native bundle + sourcemap (Gradle build step)", + "fullDescription": "Upload a React Native bundle and sourcemap during a Gradle build step (invoked by the sentry-android-gradle-plugin). A debug ID is injected into both files and they are uploaded under the `~/<filename>` convention.nnWithout `--release`, files are matched by debug ID. With `--release`, they are also uploaded for each `--dist`.nnUse `--wait`/`--wait-for` to block until the server finishes processing the upload. Indexed/file RAM bundles (a pre-Hermes format) are not supported; use a plain or Hermes bundle.", + "flags": [ + { + "name": "sourcemap", + "type": "parsed", + "description": "Path to the sourcemap to upload", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "bundle", + "type": "parsed", + "description": "Path to the bundle to upload", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "release", + "type": "parsed", + "description": "Release version to publish to", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dist", + "type": "parsed", + "description": "Distribution(s) to publish (repeatable; requires --release)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "wait", + "type": "boolean", + "description": "Wait for the server to fully process the uploaded files", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "wait-for", + "type": "parsed", + "description": "Wait for processing, but at most this many seconds", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [] + }, + { + "command_path": "sentry react-native xcode", + "brief": "Upload React Native sourcemaps (Xcode build step)", + "fullDescription": "Upload React Native sourcemaps from an Xcode build phase. In a release build the RN build script is wrapped so the produced bundle and sourcemap are captured and uploaded; in a simulator build with `--allow-fetch` they are fetched from the packager; in a debug build the script simply runs.nnRelease/distribution come from `SENTRY_RELEASE`/`SENTRY_DIST` or the app Info.plist (unless `--no-auto-release`); outside an Xcode build the release is discovered via `xcodebuild`. Use `--wait`/`--wait-for` to block until the server finishes processing the upload.", + "flags": [ + { + "name": "force", + "type": "boolean", + "description": "Run even in a debug configuration", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "allow-fetch", + "type": "boolean", + "description": "Fetch sourcemaps from the packager on simulator builds", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "fetch-from", + "type": "parsed", + "description": "Packager URL to fetch from (default: ${DEFAULT_PACKAGER_URL})", + "hidden": false, + "optional": true, + "variadic": false, + "default": "${DEFAULT_PACKAGER_URL" + }, + { + "name": "build-script", + "type": "parsed", + "description": "Path to the react-native-xcode.sh build script", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dist", + "type": "parsed", + "description": "Distribution(s) to publish (repeatable)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "wait", + "type": "boolean", + "description": "Wait for the server to fully process the uploaded files", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "wait-for", + "type": "parsed", + "description": "Wait for processing, but at most this many seconds", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-auto-release", + "type": "boolean", + "description": "Don't read the release from Xcode project files", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "allow-xcode-infoplist-preprocessing", + "type": "boolean", + "description": "Run the C preprocessor over Info.plist (INFOPLIST_PREPROCESS)", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "script-arg", + "description": "Extra arguments passed to the build script", + "variadic": true + } + ] + }, + { + "command_path": "sentry release archive", + "brief": "Archive a release", + "fullDescription": "Mark a release as archived. Archived releases are hidden from the default `sentry release list` but are retained and can be restored with `sentry release restore`.nnExamples:n sentry release archive 1.0.0n sentry release archive my-org/1.0.0n sentry release archive 1.0.0 --dry-run", + "flags": [ + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to archive" + } + ] + }, + { + "command_path": "sentry release create", + "brief": "Create a release", + "fullDescription": "Create a new Sentry release.nnThe version must match the `release` value in Sentry.init().nUse `org/version` to specify the org — the `org/` prefix is the org slug, notnpart of the version. E.g., `sentry/1.0.0` means org=sentry, version=1.0.0.nnExamples:n sentry release create 1.0.0n sentry release create my-org/1.0.0n sentry release create 1.0.0 --project my-projectn sentry release create 1.0.0 --project proj-a,proj-bn sentry release create 1.0.0 --finalizen sentry release create 1.0.0 --ref mainn sentry release create 1.0.0 --url https://github.com/org/repo/releases/tag/1.0.0n sentry release create 1.0.0 --dry-run", + "flags": [ + { + "name": "project", + "type": "parsed", + "description": "Associate with project(s), comma-separated", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "finalize", + "type": "boolean", + "description": "Immediately finalize the release (set dateReleased)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "ref", + "type": "parsed", + "description": "Git ref (branch or tag name)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "url", + "type": "parsed", + "description": "URL to the release source", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to create" + } + ] + }, + { + "command_path": "sentry release delete", + "brief": "Delete a release", + "fullDescription": "Permanently delete a Sentry release.nnExamples:n sentry release delete 1.0.0n sentry release delete my-org/1.0.0n sentry release delete 1.0.0 --yesn sentry release delete 1.0.0 --dry-run", + "flags": [ + { + "name": "yes", + "type": "boolean", + "description": "Skip confirmation prompt", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "force", + "type": "boolean", + "description": "Force operation without confirmation", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to delete" + } + ] + }, + { + "command_path": "sentry release deploy", + "brief": "Create a deploy for a release", + "fullDescription": "Create a deploy record for a release in a specific environment.nnExamples:n sentry release deploy 1.0.0 productionn sentry release deploy my-org/1.0.0 staging \"Deploy #42\"n sentry release deploy 1.0.0 production --url https://example.comn sentry release deploy 1.0.0 production --time 120n sentry release deploy 1.0.0 production --dry-run", + "flags": [ + { + "name": "url", + "type": "parsed", + "description": "URL for the deploy", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "started", + "type": "parsed", + "description": "Deploy start time (ISO 8601)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "finished", + "type": "parsed", + "description": "Deploy finish time (ISO 8601)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "time", + "type": "parsed", + "description": "Deploy duration in seconds (sets started = now - time, finished = now)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version" + }, + { + "name": "environment", + "description": "Deploy environment (e.g. production)" + }, + { + "name": "name", + "description": "Optional deploy name (quote multi-word names, e.g. \"Deploy #42\")", + "optional": true + } + ] + }, + { + "command_path": "sentry release deploys", + "brief": "List deploys for a release", + "fullDescription": "List all deploys recorded for a specific release.nnExamples:n sentry release deploys 1.0.0n sentry release deploys my-org/1.0.0n sentry release deploys 1.0.0 --json", + "flags": [], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version" + } + ] + }, + { + "command_path": "sentry release finalize", + "brief": "Finalize a release", + "fullDescription": "Mark a release as finalized by setting its release date.nnExamples:n sentry release finalize 1.0.0n sentry release finalize my-org/1.0.0n sentry release finalize 1.0.0 --released 2025-01-01T00:00:00Zn sentry release finalize 1.0.0 --dry-run", + "flags": [ + { + "name": "released", + "type": "parsed", + "description": "Custom release timestamp (ISO 8601). Defaults to now.", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "url", + "type": "parsed", + "description": "URL for the release", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to finalize" + } + ] + }, + { + "command_path": "sentry release list", + "brief": "List releases with adoption and health metrics", + "fullDescription": "List releases in an organization with adoption and crash-free metrics.nnWhen run from a project directory (DSN auto-detection or explicitn<org>/<project> target), shows only releases for that project.nnSort options:n date # by creation date (default)n sessions # by total sessionsn users # by total usersn crash_free_sessions # by crash-free session rate (aliases: stable_sessions, cfs)n crash_free_users # by crash-free user rate (aliases: stable_users, cfu)nnTarget specification:n sentry release list # auto-detect from DSN (project-scoped)n sentry release list <org>/ # list all releases in org (paginated)n sentry release list <org>/<proj> # list releases for projectn sentry release list <org> # list releases in orgnnPagination:n sentry release list <org>/ -c next # fetch next pagen sentry release list <org>/ -c prev # fetch previous pagennExamples:n sentry release list # auto-detect projectn sentry release list my-org/ # all releases in orgn sentry release list my-org/my-proj # project-scopedn sentry release list --sort cfs # sort by crash-free sessionsn sentry release list --environment production # filter by envn sentry release list --period 7d # last 7 days of health datan sentry release list --jsonnnAlias: `sentry releases` → `sentry release list`", + "flags": [ + { + "name": "sort", + "type": "parsed", + "description": "Sort: date, sessions, users, crash_free_sessions (cfs), crash_free_users (cfu)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_SORT" + }, + { + "name": "environment", + "type": "parsed", + "description": "Filter by environment (repeatable, comma-separated)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "period", + "type": "parsed", + "description": "Health stats period (e.g., 24h, 7d, 14d, 90d)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "90d" + }, + { + "name": "status", + "type": "parsed", + "description": "Filter by status: open (default) or archived", + "hidden": false, + "optional": false, + "variadic": false, + "default": "open" + }, + { + "name": "limit", + "type": "parsed", + "description": "Max number of releases to show", + "hidden": false, + "optional": false, + "variadic": false, + "default": "25" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "target", + "description": "<org>/<project>, auto-detected project, or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry release propose-version", + "brief": "Propose a release version", + "fullDescription": "Propose a release version from CI environment variables or git HEAD SHA.nnDetection order:n 1. SENTRY_RELEASE env varn 2. SOURCE_VERSION (Heroku)n 3. HEROKU_BUILD_COMMIT / HEROKU_SLUG_COMMITn 4. CODEBUILD_RESOLVED_SOURCE_VERSION (AWS CodeBuild)n 5. CIRCLE_SHA1 (CircleCI)n 6. CF_PAGES_COMMIT_SHA (Cloudflare Pages)n 7. GAE_DEPLOYMENT_ID (Google App Engine)n 8. GITHUB_SHA (GitHub Actions)n 9. VERCEL_GIT_COMMIT_SHA (Vercel)n 10. RENDER_GIT_COMMIT (Render)n 11. NETLIFY_COMMIT_SHA (Netlify)n 12. CI_COMMIT_SHA (GitLab CI)n 13. BITBUCKET_COMMIT (Bitbucket Pipelines)n 14. TRAVIS_COMMIT (Travis CI)n 15. Git HEAD SHA (fallback)nnUseful in CI scripts:n sentry release create $(sentry release propose-version)nnExamples:n sentry release propose-versionn sentry release propose-version --json", + "flags": [], + "positional_params": [] + }, + { + "command_path": "sentry release restore", + "brief": "Restore an archived release", + "fullDescription": "Restore an archived release by setting its status back to open, making it visible in the default `sentry release list` again.nnExamples:n sentry release restore 1.0.0n sentry release restore my-org/1.0.0n sentry release restore 1.0.0 --dry-run", + "flags": [ + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would happen without making changes", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to restore" + } + ] + }, + { + "command_path": "sentry release set-commits", + "brief": "Set commits for a release", + "fullDescription": "Associate commits with a release.nnUse --auto to let Sentry discover commits via your repository integrationn(requires a local git checkout — matches the origin remote against Sentry repos),nor --local to read commits from the local git history.nWith no flag, tries --auto first and falls back to --local on failure.nnFor monorepos, --path restricts commits to one or more subtreesn(comma-separated). It implies --local and cannot be combined withn--auto or --commit, whose ranges are expanded server-side.nnUse --from <ref> to read the local range <ref>..HEAD (e.g. the previousnrelease tag through the current checkout). It implies --local, reads thenwhole range (--initial-depth does not apply), and combines with --path tonscope a monorepo release to the files that changed since the last release.nLike --path, it cannot be combined with --auto or --commit. Requires anfull (non-shallow) checkout spanning the range.nnExamples:n sentry release set-commits 1.0.0 --auton sentry release set-commits my-org/1.0.0 --localn sentry release set-commits 1.0.0 --local --initial-depth 50n sentry release set-commits 1.0.0 --path apps/mobile,packages/shared-uin sentry release set-commits 1.0.0 --from v0.9.0n sentry release set-commits 1.0.0 --from v0.9.0 --path apps/mobile,apps/sharedn sentry release set-commits 1.0.0 --commit owner/repo@abc123..def456n sentry release set-commits 1.0.0 --clear", + "flags": [ + { + "name": "auto", + "type": "boolean", + "description": "Auto-discover commits via repository integration (needs local git checkout)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "local", + "type": "boolean", + "description": "Read commits from local git history", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "clear", + "type": "boolean", + "description": "Clear all commits from the release", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "commit", + "type": "parsed", + "description": "Explicit commit as REPO@SHA or REPO@PREV..SHA (comma-separated)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "path", + "type": "parsed", + "description": "Filter commits to these paths (comma-separated). Implies --local.", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "from", + "type": "parsed", + "description": "Read the local range <ref>..HEAD (e.g. previous release tag). Implies --local.", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "initial-depth", + "type": "parsed", + "description": "Number of commits to read with --local", + "hidden": false, + "optional": false, + "variadic": false, + "default": "20" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version" + } + ] + }, + { + "command_path": "sentry release view", + "brief": "View release details with health metrics", + "fullDescription": "Show detailed information about a Sentry release, includingnper-project adoption and crash-free metrics.nnExamples:n sentry release view 1.0.0n sentry release view my-org/1.0.0n sentry release view \"sentry-cli@0.24.0\"n sentry release view 1.0.0 --json", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/version", + "description": "[<org>/]<version> - Release version to view" + } + ] + }, + { + "command_path": "sentry replay list", + "brief": "List recent Session Replays", + "fullDescription": "List recent Session Replays from Sentry.nnTarget patterns:n sentry replay list # auto-detect org from config or DSNn sentry replay list <org>/ # list all org replaysn sentry replay list <org>/<proj> # list replays for one projectn sentry replay list <project> # find project across all orgsnn${targetPatternExplanation()}\\n\\nExamples:n sentry replay listn sentry replay list sentry/n sentry replay list sentry/cli --limit 50n sentry replay list sentry/cli --sort durationn sentry replay list sentry/cli -q \"user.email:foo@example.com\"n sentry replay list sentry/cli -e production -e canaryn sentry replay list sentry/cli --period 24hnnAlias: `sentry replays` → `sentry replay list`", + "flags": [ + { + "name": "limit", + "type": "parsed", + "description": "Number of replays (${LIST_MIN_LIMIT}-${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(LIST_DEFAULT_LIMIT)" + }, + { + "name": "query", + "type": "parsed", + "description": "Search query (Sentry replay search syntax)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "environment", + "type": "parsed", + "description": "Filter by environment (repeatable, comma-separated)", + "hidden": false, + "optional": true, + "variadic": true + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort by: date, oldest, duration, errors, activity, or a raw replay sort field", + "hidden": false, + "optional": false, + "variadic": false, + "default": "date" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project", + "description": "<org>/, <org>/<project>, or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry replay view", + "brief": "View a Session Replay", + "fullDescription": "View detailed information about a Session Replay.nnReplay ID formats:n <replay-id> - auto-detect org from config or DSNn <org>/<replay-id> - explicit organizationn <org>/<project>/<id> - explicit org/project contextn <replay-url> - parse org and replay ID from a Sentry URLnnExamples:n sentry replay view 346789a703f6454384f1de473b8b9fccn sentry replay view sentry/346789a703f6454384f1de473b8b9fccn sentry replay view sentry/cli/346789a703f6454384f1de473b8b9fccn sentry replay view https://sentry.io/organizations/sentry/explore/replays/346789a703f6454384f1de473b8b9fcc/n sentry replay view --web sentry/346789a703f6454384f1de473b8b9fcc", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "replay-id-or-url", + "description": "[<org>/<project>] <replay-id> or <replay-url>", + "variadic": true + } + ] + }, + { + "command_path": "sentry repo list", + "brief": "List repositories", + "fullDescription": "List repositories connected to an organization.nnTarget specification:n sentry repo list # auto-detect from DSN or confign sentry repo list <org>/ # list all repos in org (paginated)n sentry repo list <org>/<proj> # list repos in org (project context)n sentry repo list <org> # list repos in orgnnPagination:n sentry repo list <org>/ -c next # fetch next pagen sentry repo list <org>/ -c prev # fetch previous pagennExamples:n sentry repo list # auto-detect or list alln sentry repo list my-org/ # list repositories in my-org (paginated)n sentry repo list --limit 10n sentry repo list --jsonnnAlias: `sentry repos` → `sentry repo list`", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry schema", + "brief": "Browse the Sentry API schema", + "fullDescription": "Browse and search the Sentry API schema. Shows available resources, operations, and endpoint details. Use with --json for machine-readable output.nnExamples:n sentry schema List all API resourcesn sentry schema issues Show endpoints for a resourcen sentry schema issues list Show details for one endpointn sentry schema --all Flat list of all endpointsn sentry schema --search monitor Search endpoints by keyword", + "flags": [ + { + "name": "all", + "type": "boolean", + "description": "Show all endpoints in a flat list", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "search", + "type": "parsed", + "description": "Search endpoints by keyword", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "resource", + "description": "Resource name and optional operation", + "variadic": true + } + ] + }, + { + "command_path": "sentry send-envelope", + "brief": "Send a Sentry envelope file (deprecated)", + "fullDescription": "This command has been replaced by `sentry event send --raw <file>`.nnUse `sentry event send --raw ./captured.envelope` instead.", + "flags": [ + { + "name": "dsn", + "type": "parsed", + "description": "DSN", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "raw", + "type": "boolean", + "description": "Raw mode", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "args", + "description": "Path(s) to envelope file(s)", + "variadic": true + } + ] + }, + { + "command_path": "sentry snapshots diff", + "brief": "Compare two directories of snapshot images", + "fullDescription": "Compare two directories of snapshot images locally. Images present in both directories are diffed perceptually; a PNG diff mask is written for each changed image, and a JSON report is printed.nnComparison is anti-aliasing aware (disable with --no-antialiasing) and makes no network requests.nnUsage:n sentry snapshots diff ./baseline ./headn sentry snapshots diff ./baseline ./head --threshold 0.02 --output ./diffs/n sentry snapshots diff ./baseline ./head --fail-on-diff", + "flags": [ + { + "name": "output", + "type": "parsed", + "description": "Directory for diff mask images (default: ${DEFAULT_OUTPUT})", + "hidden": false, + "optional": true, + "variadic": false, + "default": "${DEFAULT_OUTPUT" + }, + { + "name": "threshold", + "type": "parsed", + "description": "Pixel color difference threshold (0.0-1.0)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "0.01" + }, + { + "name": "no-antialiasing", + "type": "boolean", + "description": "Disable antialiasing detection", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "fail-on-diff", + "type": "boolean", + "description": "Exit non-zero if any diffs (changed/added/removed/errored) are found", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "selective", + "type": "boolean", + "description": "Treat images missing from head as skipped instead of removed", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "base-dir", + "description": "Path to the baseline image directory" + }, + { + "name": "head-dir", + "description": "Path to the head image directory" + } + ] + }, + { + "command_path": "sentry snapshots download", + "brief": "Download baseline snapshot images", + "fullDescription": "Download baseline snapshot images from Sentry's preprod system to a local directory.nnUse --snapshot-id to download a specific snapshot, or --app-id to resolve the latest baseline (org auth tokens require --project with a project ID or slug for --app-id).nnThis feature only works with Sentry SaaS.nnUsage:n sentry snapshots download --snapshot-id 1234567890n sentry snapshots download --app-id my-app --branch mainn sentry snapshots download --app-id my-app --output ./baseline/", + "flags": [ + { + "name": "app-id", + "type": "parsed", + "description": "App identifier (e.g. my-app) to resolve the latest baseline; mutually exclusive with --snapshot-id", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "snapshot-id", + "type": "parsed", + "description": "Direct snapshot artifact ID; mutually exclusive with --app-id", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "branch", + "type": "parsed", + "description": "Git branch filter (only with --app-id)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "output", + "type": "parsed", + "description": "Directory for extracted images (default: ${DEFAULT_OUTPUT})", + "hidden": false, + "optional": true, + "variadic": false, + "default": "${DEFAULT_OUTPUT" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry snapshots upload", + "brief": "Upload snapshots to a project", + "fullDescription": "Upload a folder of screenshot images as a snapshot for visual diffing.nnEach image (PNG/JPEG) is hashed and uploaded to Sentry's object store (images already present are skipped), then a manifest is created. Companion `<image>.json` sidecar files add per-image metadata. This feature only works with Sentry SaaS.nnUsage:n sentry snapshots upload ./screenshots --app-id com.example.appn sentry snapshots upload ./shots --app-id my-app --diff-threshold 0.01n sentry snapshots upload ./shots --app-id my-app --selective", + "flags": [ + { + "name": "app-id", + "type": "parsed", + "description": "The application identifier", + "hidden": false, + "optional": false, + "variadic": false + }, + { + "name": "diff-threshold", + "type": "parsed", + "description": "Only report an image as changed when its difference exceeds this fraction (0.0–1.0, e.g. 0.01 = 1%)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "selective", + "type": "boolean", + "description": "This upload contains only a subset of images (removals/renames won't be detected on PRs)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "all-image-file-names", + "type": "parsed", + "description": "Comma-separated list of all image names in the full suite (for selective uploads; implies --selective)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "all-image-file-names-file", + "type": "parsed", + "description": "Path to a file listing all image names, one per line (for selective uploads; implies --selective)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "head-sha", + "type": "parsed", + "description": "VCS commit SHA (defaults to the current commit)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-sha", + "type": "parsed", + "description": "VCS base commit SHA (defaults to the merge-base with the base ref)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "vcs-provider", + "type": "parsed", + "description": "VCS provider (defaults to the current remote's provider)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "head-repo-name", + "type": "parsed", + "description": "Head repository name, e.g. owner/repo (defaults to the current)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-repo-name", + "type": "parsed", + "description": "Base repository name, e.g. owner/repo (for forks)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "head-ref", + "type": "parsed", + "description": "Head branch/reference (defaults to the current branch)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "base-ref", + "type": "parsed", + "description": "Base branch/reference (defaults to the merge-base tracking ref)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "pr-number", + "type": "parsed", + "description": "Pull request number (auto-detected in pull_request GitHub Actions runs)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "force-git-metadata", + "type": "boolean", + "description": "Force collecting git metadata even outside CI (conflicts with --no-git-metadata)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "no-git-metadata", + "type": "boolean", + "description": "Disable automatic git metadata collection", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "path", + "description": "Path to the folder containing images to upload" + } + ] + }, + { + "command_path": "sentry sourcemap inject", + "brief": "Inject debug IDs into JavaScript files and sourcemaps", + "fullDescription": "Scans a directory for .js/.mjs/.cjs files and their companion .map files, then injects Sentry debug IDs for reliable sourcemap resolution.nnThe injection is idempotent — files that already have debug IDs are skipped.nnExits with an error if zero JS + sourcemap pairs are discovered (typical cause: bundler not emitting .map files). Pass --allow-empty to suppress this check for directories that may legitimately be empty.nnUsage:n sentry sourcemap inject ./distn sentry sourcemap inject ./build --ext .js,.mjsn sentry sourcemap inject ./out --dry-runn sentry sourcemap inject ./maybe-empty --allow-empty", + "flags": [ + { + "name": "ext", + "type": "parsed", + "description": "Comma-separated file extensions to process (default: .js,.cjs,.mjs)", + "hidden": false, + "optional": true, + "variadic": false, + "default": ".js" + }, + { + "name": "ignore", + "type": "parsed", + "description": "Comma-separated glob patterns to exclude (gitignore-style)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "ignore-file", + "type": "parsed", + "description": "Path to a file with gitignore-style patterns to exclude", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dry-run", + "type": "boolean", + "description": "Show what would be modified without writing", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "allow-empty", + "type": "boolean", + "description": "Exit successfully when no JS + sourcemap pairs are found (default: error out to catch silent build misconfigurations)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "error out to catch silent build misconfigurations)\"" + } + ], + "positional_params": [ + { + "name": "directory", + "description": "Directory to scan for JS + sourcemap pairs" + } + ] + }, + { + "command_path": "sentry sourcemap resolve", + "brief": "Resolve and report sourcemap linkage for JavaScript files", + "fullDescription": "Read-only diagnostic that scans a directory for .js/.mjs/.cjs files and reports, for each file, how its sourcemap resolves (companion .map file, external sourceMappingURL directive, inline data: URL, or none) and whether a Sentry debug ID has been injected.nnThis command never modifies files. Use it to debug why `sentry sourcemap upload` may not find the expected sourcemaps.nnUsage:n sentry sourcemap resolve ./distn sentry sourcemap resolve ./build --ext .js,.mjsn sentry sourcemap resolve ./out --json", + "flags": [ + { + "name": "ext", + "type": "parsed", + "description": "Comma-separated file extensions to process (default: .js,.cjs,.mjs)", + "hidden": false, + "optional": true, + "variadic": false, + "default": ".js" + }, + { + "name": "ignore", + "type": "parsed", + "description": "Comma-separated glob patterns to exclude (gitignore-style)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "ignore-file", + "type": "parsed", + "description": "Path to a file with gitignore-style patterns to exclude", + "hidden": false, + "optional": true, + "variadic": false + } + ], + "positional_params": [ + { + "name": "directory", + "description": "Directory to scan for JS files" + } + ] + }, + { + "command_path": "sentry sourcemap upload", + "brief": "Upload sourcemaps to Sentry", + "fullDescription": "Upload JavaScript sourcemaps and source files to Sentry using debug-ID-based matching.nnAutomatically injects debug IDs into any files that don't already have them.nOrg/project are auto-detected from DSN, env vars, or config defaults.nnExits with an error if zero JS + sourcemap pairs are discovered (typical cause: bundler not emitting .map files). Pass --allow-empty to suppress this check for directories that may legitimately be empty.nnUsage:n sentry sourcemap upload ./distn sentry sourcemap upload ./dist --release 1.0.0n sentry sourcemap upload ./dist --release 1.0.0 --dist 12345n sentry sourcemap upload ./dist --url-prefix '~/static/js/'n sentry sourcemap upload ./dist --no-rewriten sentry sourcemap upload ./dist --ext .js,.mjsn sentry sourcemap upload ./maybe-empty --allow-empty", + "flags": [ + { + "name": "release", + "type": "parsed", + "description": "Release version to associate with the upload", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "dist", + "type": "parsed", + "description": "Distribution identifier to disambiguate builds within a release", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "url-prefix", + "type": "parsed", + "description": "URL prefix for uploaded files (default: ~/)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "~/)\"" + }, + { + "name": "ext", + "type": "parsed", + "description": "Comma-separated file extensions to process (default: .js,.cjs,.mjs)", + "hidden": false, + "optional": true, + "variadic": false, + "default": ".js" + }, + { + "name": "ignore", + "type": "parsed", + "description": "Comma-separated glob patterns to exclude (gitignore-style)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "ignore-file", + "type": "parsed", + "description": "Path to a file with gitignore-style patterns to exclude", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "strip-prefix", + "type": "parsed", + "description": "Strip a prefix from uploaded file paths (e.g. 'build/')", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "strip-common-prefix", + "type": "boolean", + "description": "Automatically strip the longest common path prefix from all files", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "no-rewrite", + "type": "boolean", + "description": "Upload files as-is without injecting debug IDs", + "hidden": false, + "optional": true, + "variadic": false, + "default": "false" + }, + { + "name": "allow-empty", + "type": "boolean", + "description": "Exit successfully when no JS + sourcemap pairs are found (default: error out to catch silent build misconfigurations)", + "hidden": false, + "optional": true, + "variadic": false, + "default": "error out to catch silent build misconfigurations)\"" + } + ], + "positional_params": [ + { + "name": "directory", + "description": "Directory containing sourcemaps" + } + ] + }, + { + "command_path": "sentry span list", + "brief": "List spans in a project or trace", + "fullDescription": "List spans from a Sentry project, or within a specific trace.nnProject mode (no trace ID):n sentry span list # auto-detect from DSN or confign sentry span list <org>/<project> # explicit org and projectn sentry span list <project> # find project across all orgsnn${TARGET_PATTERN_NOTE}\\n\\nTrace mode (provide a 32-char trace ID):n sentry span list <trace-id> # auto-detect org/projectn sentry span list <org>/<project>/<trace-id> # explicitn sentry span list <project> <trace-id> # find project + tracennPagination:n sentry span list -c next # fetch next page (project mode)n sentry span list -c prev # fetch previous pagen sentry span list <trace-id> -c next # fetch next page (trace mode)nnExamples:n sentry span list # List recent spans in projectn sentry span list -q \"op:db\" # Find all DB spansn sentry span list -q \"duration:>100ms\" # Slow spansn sentry span list --period 24h # Last 24 hours onlyn sentry span list --sort duration # Sort by slowest firstn sentry span list <trace-id> # Spans in a specific tracen sentry span list <trace-id> -q \"op:db\" # DB spans in a tracennAlias: `sentry spans` → `sentry span list`", + "flags": [ + { + "name": "limit", + "type": "parsed", + "description": "Number of spans (<=${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(LIST_DEFAULT_LIMIT)" + }, + { + "name": "query", + "type": "parsed", + "description": "Filter spans (e.g., \"op:db\", \"project:backend\", \"project:[cli,api]\")", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort order: ${VALID_SORT_VALUES.join(\", \")}", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_SORT" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/trace-id", + "description": "[<org>/<project>] or [<org>/<project>/]<trace-id>", + "variadic": true + } + ] + }, + { + "command_path": "sentry span view", + "brief": "View details of specific spans", + "fullDescription": "View detailed information about one or more spans within a trace.nnTarget specification:n sentry span view <trace-id> <span-id> # auto-detectn sentry span view <org>/<project>/<trace-id> <span-id> # explicitnnThe first argument is the trace ID (optionally prefixed with org/project),nfollowed by one or more span IDs.nnExamples:n sentry span view <trace-id> a1b2c3d4e5f67890n sentry span view <trace-id> a1b2c3d4e5f67890 b2c3d4e5f6789012n sentry span view sentry/my-project/<trace-id> a1b2c3d4e5f67890", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "trace-id/span-id", + "description": "[<org>/<project>/]<trace-id> <span-id> [<span-id>...] - Trace ID and one or more span IDs", + "variadic": true + } + ] + }, + { + "command_path": "sentry team list", + "brief": "List teams", + "fullDescription": "List teams in an organization.nnTarget specification:n sentry team list # auto-detect from DSN or confign sentry team list <org>/ # list all teams in org (paginated)n sentry team list <org>/<proj> # list teams in org (project context)n sentry team list <org> # list teams in orgnnPagination:n sentry team list <org>/ -c next # fetch next pagen sentry team list <org>/ -c prev # fetch previous pagennExamples:n sentry team list # auto-detect or list alln sentry team list my-org/ # list teams in my-org (paginated)n sentry team list --limit 10n sentry team list --jsonnnAlias: `sentry teams` → `sentry team list`", + "flags": [ + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [] + }, + { + "command_path": "sentry trace list", + "brief": "List recent traces in a project", + "fullDescription": "List recent traces from Sentry projects.nnTarget patterns:n sentry trace list # auto-detect from DSN or confign sentry trace list <org>/<proj> # explicit org and projectn sentry trace list <project> # find project across all orgsnn${TARGET_PATTERN_NOTE}\\n\\nExamples:n sentry trace list # List last 10 tracesn sentry trace list --limit 50 # Show more tracesn sentry trace list --sort duration # Sort by slowest firstn sentry trace list --period 24h # Last 24 hours onlyn sentry trace list -q \"transaction:GET /api/users\" # Filter by transactionnnAlias: `sentry traces` → `sentry trace list`", + "flags": [ + { + "name": "limit", + "type": "parsed", + "description": "Number of traces (${LIST_MIN_LIMIT}-${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "String(LIST_DEFAULT_LIMIT)" + }, + { + "name": "query", + "type": "parsed", + "description": "Search query (Sentry search syntax)", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort by: date, duration", + "hidden": false, + "optional": false, + "variadic": false, + "default": "date" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project", + "description": "<org>/<project> or <project> (search)", + "optional": true + } + ] + }, + { + "command_path": "sentry trace logs", + "brief": "View logs associated with a trace", + "fullDescription": "View logs associated with a specific distributed trace.nnTarget specification:n sentry trace logs <trace-id> # auto-detect orgn sentry trace logs <org>/<trace-id> # explicit orgn sentry trace logs <org>/<project>/<trace-id> # filter to projectnnWhen a project is specified, only logs from that project are shown.nUse --query 'project:[a,b]' to filter to multiple projects.nnThe trace ID is the 32-character hexadecimal identifier.nnExamples:n sentry trace logs abc123def456abc123def456abc123den sentry trace logs myorg/abc123def456abc123def456abc123den sentry trace logs myorg/backend/abc123def456abc123def456abc123den sentry trace logs --period 7d abc123def456abc123def456abc123den sentry trace logs --json abc123def456abc123def456abc123de", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open trace in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "period", + "type": "parsed", + "description": "", + "hidden": false, + "optional": false, + "variadic": false, + "default": "DEFAULT_PERIOD" + }, + { + "name": "limit", + "type": "parsed", + "description": "Number of log entries (<=${LIST_MAX_LIMIT})", + "hidden": false, + "optional": false, + "variadic": false, + "default": "100" + }, + { + "name": "query", + "type": "parsed", + "description": "Filter query (e.g., \"severity:error\", \"project:backend\", \"project:[a,b]\")", + "hidden": false, + "optional": true, + "variadic": false + }, + { + "name": "sort", + "type": "parsed", + "description": "Sort order: \"newest\" (default) or \"oldest\"", + "hidden": false, + "optional": false, + "variadic": false, + "default": "newest" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/trace-id", + "description": "[<org>/[<project>/]]<trace-id> - Optional org/project and required trace ID", + "variadic": true + } + ] + }, + { + "command_path": "sentry trace view", + "brief": "View details of a specific trace", + "fullDescription": "View detailed information about a distributed trace by its ID.nnTarget specification:n sentry trace view <trace-id> # auto-detect from DSN or confign sentry trace view <org>/<project>/<trace-id> # explicit org and projectn sentry trace view <project> <trace-id> # find project across all orgsnnThe trace ID is the 32-character hexadecimal identifier.", + "flags": [ + { + "name": "web", + "type": "boolean", + "description": "Open in browser", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "full", + "type": "boolean", + "description": "Fetch full span attributes (auto-enabled with --json)", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + }, + { + "name": "fresh", + "type": "boolean", + "description": "Bypass cache and fetch fresh data", + "hidden": false, + "optional": false, + "variadic": false, + "default": "false" + } + ], + "positional_params": [ + { + "name": "org/project/trace-id", + "description": "[<org>/<project>/]<trace-id> - Target (optional) and trace ID (required)", + "variadic": true + } + ] + }, + { + "command_path": "sentry trial list", + "brief": "List product trials", + "fullDescription": "List product trials for an organization, including available,nactive, and expired trials.nnExamples:n sentry trial listn sentry trial list my-orgn sentry trial list --jsonnnAlias: `sentry trials` → `sentry trial list`", + "flags": [], + "positional_params": [ + { + "name": "org", + "description": "Organization slug (auto-detected if omitted)", + "optional": true + } + ] + }, + { + "command_path": "sentry trial start", + "brief": "Start a product trial", + "fullDescription": "Start a product trial for an organization.nnValid trial names: ${NAMES_LIST}\\n\\nUse 'plan' to start a Business plan trial (opens billing page).nnExamples:n sentry trial start seern sentry trial start seer my-orgn sentry trial start replaysn sentry trial start plann sentry trial start --json seer", + "flags": [], + "positional_params": [ + { + "name": "name", + "description": "Trial name (${NAMES_LIST})" + }, + { + "name": "org", + "description": "Organization slug (auto-detected if omitted)", + "optional": true + } + ] + } +] \ No newline at end of file From 8de813ee2962a8a789882a436f7824acac3ad859 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 12:13:18 +0000 Subject: [PATCH 3/3] chore: regenerate docs --- .../sentry-cli/skills/sentry-cli/references/auth.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/auth.md b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/auth.md index e3e92c3754..d8c4619aa2 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/auth.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/auth.md @@ -30,9 +30,15 @@ sentry auth login sentry auth login --token YOUR_SENTRY_API_TOKEN +sentry auth login --read-only + +sentry auth login --scope project:read --scope org:read +sentry auth login --scope project:read,event:read + +sentry auth login --url https://sentry.example.com SENTRY_URL=https://sentry.example.com sentry auth login -SENTRY_URL=https://sentry.example.com sentry auth login --token YOUR_TOKEN +sentry auth login --token YOUR_TOKEN --url https://sentry.example.com ``` ### `sentry auth logout`