feat(toolkit): import CLI and docs history - #1320
Merged
Merged
Conversation
The Sixel dashboard renderer now embeds Spleen 8x16 glyphs instead of Cozette, while retaining the current terminal-cell scaling and dashboard box, block, and sparkline coverage. The packaged third-party notice now carries Spleen's BSD-2-Clause attribution. <img width="1914" height="621" alt="image" src="https://github.com/user-attachments/assets/7681ff3e-2c30-4ead-8c1f-fa271f0edf63" />
The Sixel dashboard renderer now embeds Spleen 8x16 glyphs instead of Cozette, while retaining the current terminal-cell scaling and dashboard box, block, and sparkline coverage. The packaged third-party notice now carries Spleen's BSD-2-Clause attribution. <img width="1914" height="621" alt="image" src="https://github.com/user-attachments/assets/7681ff3e-2c30-4ead-8c1f-fa271f0edf63" />
The Sixel dashboard renderer now embeds Spleen 8x16 glyphs instead of Cozette, while retaining the current terminal-cell scaling and dashboard box, block, and sparkline coverage. The packaged third-party notice now carries Spleen's BSD-2-Clause attribution. <img width="1914" height="621" alt="image" src="https://github.com/user-attachments/assets/7681ff3e-2c30-4ead-8c1f-fa271f0edf63" />
`sentry dashboard view` now caps high-DPI graphics canvases at 2560px by default, preventing large Retina terminal windows from hitting the existing 8M-pixel guard and falling back to ASCII. `--no-graphics-cap` restores terminal-native width for callers who prefer it; the existing hard safety limit remains in place. The regression coverage exercises both the capped graphics path and the uncapped safety fallback. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
`sentry dashboard view` now caps high-DPI graphics canvases at 2560px by default, preventing large Retina terminal windows from hitting the existing 8M-pixel guard and falling back to ASCII. `--no-graphics-cap` restores terminal-native width for callers who prefer it; the existing hard safety limit remains in place. The regression coverage exercises both the capped graphics path and the uncapped safety fallback. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
`sentry dashboard view` now caps high-DPI graphics canvases at 2560px by default, preventing large Retina terminal windows from hitting the existing 8M-pixel guard and falling back to ASCII. `--no-graphics-cap` restores terminal-native width for callers who prefer it; the existing hard safety limit remains in place. The regression coverage exercises both the capped graphics path and the uncapped safety fallback. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…#1512) ## Bug `maybePrefetchPatches()` in `src/lib/version-check.ts` contained two silent catch blocks that swallowed errors from delta patch pre-fetching and patch cache cleanup without any logging. ## Root cause Both catch blocks used comment-only error suppression (`// Pre-fetch is best-effort` and `/* ignore */`) instead of `logger.debug()`, violating the project's silent-catch prohibition and making failures invisible even with `--verbose`. ## Reproduction Any error during `prefetchNightlyPatches`/`prefetchStablePatches` or `cleanupPatchCache` would be silently dropped, providing no diagnostic output when delta upgrades fail to pre-fetch. ## Fix - Added `logger.debug()` to both catch blocks so errors appear in `--verbose` output - Updated the silent-catch baseline to reflect the fixes <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
…#1512) ## Bug `maybePrefetchPatches()` in `src/lib/version-check.ts` contained two silent catch blocks that swallowed errors from delta patch pre-fetching and patch cache cleanup without any logging. ## Root cause Both catch blocks used comment-only error suppression (`// Pre-fetch is best-effort` and `/* ignore */`) instead of `logger.debug()`, violating the project's silent-catch prohibition and making failures invisible even with `--verbose`. ## Reproduction Any error during `prefetchNightlyPatches`/`prefetchStablePatches` or `cleanupPatchCache` would be silently dropped, providing no diagnostic output when delta upgrades fail to pre-fetch. ## Fix - Added `logger.debug()` to both catch blocks so errors appear in `--verbose` output - Updated the silent-catch baseline to reflect the fixes <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
…#1512) ## Bug `maybePrefetchPatches()` in `src/lib/version-check.ts` contained two silent catch blocks that swallowed errors from delta patch pre-fetching and patch cache cleanup without any logging. ## Root cause Both catch blocks used comment-only error suppression (`// Pre-fetch is best-effort` and `/* ignore */`) instead of `logger.debug()`, violating the project's silent-catch prohibition and making failures invisible even with `--verbose`. ## Reproduction Any error during `prefetchNightlyPatches`/`prefetchStablePatches` or `cleanupPatchCache` would be silently dropped, providing no diagnostic output when delta upgrades fail to pre-fetch. ## Fix - Added `logger.debug()` to both catch blocks so errors appear in `--verbose` output - Updated the silent-catch baseline to reflect the fixes <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
## Bug
`tryProguard()` and `tryObject()` in `src/lib/dif/find.ts` contained
three silent catch blocks that discarded errors when reading, hashing,
or parsing debug-information files during `debug-files find`.
## Root cause
Three catch blocks used bare `catch { return; }` without any logging,
violating the project's silent-catch prohibition. Users running `sentry
debug-files find` had no way to diagnose why certain files were silently
skipped.
## Reproduction
Any file I/O error (permissions, corrupted files, disk issues) during
debug file scanning would be silently swallowed, providing no diagnostic
output even with `--verbose`.
## Fix
- Added `logger.debug()` to all three catch blocks in `tryProguard`
(ProGuard UUID computation) and `tryObject` (format peek + debug file
parse)
- Updated the silent-catch baseline to reflect the fixes
<div><a
href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a
href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Bug
`tryProguard()` and `tryObject()` in `src/lib/dif/find.ts` contained
three silent catch blocks that discarded errors when reading, hashing,
or parsing debug-information files during `debug-files find`.
## Root cause
Three catch blocks used bare `catch { return; }` without any logging,
violating the project's silent-catch prohibition. Users running `sentry
debug-files find` had no way to diagnose why certain files were silently
skipped.
## Reproduction
Any file I/O error (permissions, corrupted files, disk issues) during
debug file scanning would be silently swallowed, providing no diagnostic
output even with `--verbose`.
## Fix
- Added `logger.debug()` to all three catch blocks in `tryProguard`
(ProGuard UUID computation) and `tryObject` (format peek + debug file
parse)
- Updated the silent-catch baseline to reflect the fixes
<div><a
href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a
href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Bug
`tryProguard()` and `tryObject()` in `src/lib/dif/find.ts` contained
three silent catch blocks that discarded errors when reading, hashing,
or parsing debug-information files during `debug-files find`.
## Root cause
Three catch blocks used bare `catch { return; }` without any logging,
violating the project's silent-catch prohibition. Users running `sentry
debug-files find` had no way to diagnose why certain files were silently
skipped.
## Reproduction
Any file I/O error (permissions, corrupted files, disk issues) during
debug file scanning would be silently swallowed, providing no diagnostic
output even with `--verbose`.
## Fix
- Added `logger.debug()` to all three catch blocks in `tryProguard`
(ProGuard UUID computation) and `tryObject` (format peek + debug file
parse)
- Updated the silent-catch baseline to reflect the fixes
<div><a
href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a
href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Use the correct restore endpoint url
`/organizations/${orgSlug}/dashboards/${dashboardId}/revisions/${encodedRevisionId}/restore/`
Use the correct restore endpoint url
`/organizations/${orgSlug}/dashboards/${dashboardId}/revisions/${encodedRevisionId}/restore/`
Use the correct restore endpoint url
`/organizations/${orgSlug}/dashboards/${dashboardId}/revisions/${encodedRevisionId}/restore/`
This PR fixes a `ValidationError: Invalid Event ID: contains a space.` that occurred when AI agents provided multiple event IDs separated by spaces as a single argument to commands like `sentry event view`. The root cause was that the `splitNewlineArg` utility function, used by `expandNewlineArgs`, only split input strings on newline characters (`\n`). When agents provided space-separated IDs (e.g., `"org/project/id1 org/project/id2"`), the entire string was passed as a single argument to `validateResourceId`, which correctly rejected it due to the presence of spaces. The solution modifies `splitNewlineArg` to split on any whitespace (`/\s+/`) instead of just newlines. This ensures that space-separated, tab-separated, and newline-separated IDs are all correctly parsed into individual arguments, preventing the validation error. The JSDoc for the function has also been updated to reflect this change. Fixes [CLI-1HT](https://sentry.sentry.io/issues/7449832039/?seerDrawer=true) <sub>`@sentry <feedback>`: Autofix iterates on these changes</sub> <sub>`@sentry stop iterating`: Autofix stops iterating on this run</sub> <sub>This PR was automatically generated by Sentry. You can [adjust this setting](https://sentry.sentry.io/settings/projects/cli/seer/) at any time.</sub> --------- Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com> Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
This PR fixes a `ValidationError: Invalid Event ID: contains a space.` that occurred when AI agents provided multiple event IDs separated by spaces as a single argument to commands like `sentry event view`. The root cause was that the `splitNewlineArg` utility function, used by `expandNewlineArgs`, only split input strings on newline characters (`\n`). When agents provided space-separated IDs (e.g., `"org/project/id1 org/project/id2"`), the entire string was passed as a single argument to `validateResourceId`, which correctly rejected it due to the presence of spaces. The solution modifies `splitNewlineArg` to split on any whitespace (`/\s+/`) instead of just newlines. This ensures that space-separated, tab-separated, and newline-separated IDs are all correctly parsed into individual arguments, preventing the validation error. The JSDoc for the function has also been updated to reflect this change. Fixes [CLI-1HT](https://sentry.sentry.io/issues/7449832039/?seerDrawer=true) <sub>`@sentry <feedback>`: Autofix iterates on these changes</sub> <sub>`@sentry stop iterating`: Autofix stops iterating on this run</sub> <sub>This PR was automatically generated by Sentry. You can [adjust this setting](https://sentry.sentry.io/settings/projects/cli/seer/) at any time.</sub> --------- Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com> Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
This PR fixes a `ValidationError: Invalid Event ID: contains a space.` that occurred when AI agents provided multiple event IDs separated by spaces as a single argument to commands like `sentry event view`. The root cause was that the `splitNewlineArg` utility function, used by `expandNewlineArgs`, only split input strings on newline characters (`\n`). When agents provided space-separated IDs (e.g., `"org/project/id1 org/project/id2"`), the entire string was passed as a single argument to `validateResourceId`, which correctly rejected it due to the presence of spaces. The solution modifies `splitNewlineArg` to split on any whitespace (`/\s+/`) instead of just newlines. This ensures that space-separated, tab-separated, and newline-separated IDs are all correctly parsed into individual arguments, preventing the validation error. The JSDoc for the function has also been updated to reflect this change. Fixes [CLI-1HT](https://sentry.sentry.io/issues/7449832039/?seerDrawer=true) <sub>`@sentry <feedback>`: Autofix iterates on these changes</sub> <sub>`@sentry stop iterating`: Autofix stops iterating on this run</sub> <sub>This PR was automatically generated by Sentry. You can [adjust this setting](https://sentry.sentry.io/settings/projects/cli/seer/) at any time.</sub> --------- Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com> Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com>
…nstall flags, plugin syntax (#1514) ## Documentation Audit Report — 2026-08-31 Weekly audit comparing the Sentry CLI implementation (v0.45.0-dev.0) against its documentation. This covers changes since the last merged audit ([#1461](getsentry/cli#1461), 2026-08-24). --- ### Findings Summary | Section | Status | |---------|--------| | A. Undocumented commands | ✅ No gaps — `check:fragments` CI enforces coverage | | B. Undocumented flags | ✅ No gaps — auto-generated from CLI metadata | | C. Missing usage examples | ✅ All 37 fragments have bash examples | | D. Stale descriptions | ✅ No drift — pulled from code at generation time | | E. Missing route mappings | ✅ No gaps — `ROUTE_TO_REFERENCE` replaced with auto 1:1 mapping | | F. Installation gaps |⚠️ Install script flags undocumented in getting-started.mdx | | G. Undocumented env vars | ✅ No gaps — `check:env-coverage` CI enforces completeness | | H. Auth/self-hosted gaps |⚠️ `auth refresh --read-only/--scope` examples missing | | I. Plugin/skills gaps |⚠️ `sentry docs` missing from agentic pages; stale plugin syntax | | J. README/DEVELOPMENT.md drift | ✅ No drift — auto-generated marker sections | --- ### Changes Made **1. Add `sentry docs` and `sentry status` to agentic guidance (I1, I2)** The `sentry docs` command suite (#1457) and `sentry status` command (#1494) are recent additions that are highly relevant for AI agent workflows but were not mentioned in `agentic-usage.md` or `agent-guidance.md`. Added: - New capability in agentic-usage.md: "Query documentation" - New examples: `sentry docs "How do I set up source maps?"` and `sentry status` - New workflow patterns in agent-guidance.md for documentation querying and status checking - New key principle: "Use `sentry docs` for setup questions" - New common mistake entry about fetching docs externally **2. Document install script flags in getting-started.mdx (F1)** The install script accepts `--no-modify-path`, `--no-completions`, and `--no-agent-skills` flags, plus the `SENTRY_INSTALL_DIR` env var. These were documented in the CLI fragment (`cli.md`) but not on the Getting Started page where users encounter the install script. **3. Update plugins/README.md installation syntax (I3)** Replaced deprecated Claude Code `claude plugin marketplace add` / `claude plugin install` commands with current dotagents-based installation and automatic skill installation documentation. **4. Add `auth refresh` scoped examples (H1)** Added `--read-only` and `--scope` examples to the `auth refresh` section in `auth.md` fragment. --- ### Top 5 Most Impactful Fixes (prioritized) 1. **`sentry docs` in agentic pages** — Primary agent tool for documentation queries, invisible without this 2. **Install script flags in getting-started** — CI/Docker users need `--no-agent-skills` etc. 3. **Plugin syntax update** — Deprecated commands that no longer work 4. **`sentry docs` workflow pattern** — Natural addition to detailed agent guidance 5. **`auth refresh` scoped examples** — Minor but useful for agents and CI <div><a href="https://cursor.com/agents/bc-540303b8-6fe0-4e4e-9e70-cacd12705c98?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/8b0c0f35-da5e-409d-984c-5e39518ffb8a"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…nstall flags, plugin syntax (#1514) ## Documentation Audit Report — 2026-08-31 Weekly audit comparing the Sentry CLI implementation (v0.45.0-dev.0) against its documentation. This covers changes since the last merged audit ([#1461](getsentry/cli#1461), 2026-08-24). --- ### Findings Summary | Section | Status | |---------|--------| | A. Undocumented commands | ✅ No gaps — `check:fragments` CI enforces coverage | | B. Undocumented flags | ✅ No gaps — auto-generated from CLI metadata | | C. Missing usage examples | ✅ All 37 fragments have bash examples | | D. Stale descriptions | ✅ No drift — pulled from code at generation time | | E. Missing route mappings | ✅ No gaps — `ROUTE_TO_REFERENCE` replaced with auto 1:1 mapping | | F. Installation gaps |⚠️ Install script flags undocumented in getting-started.mdx | | G. Undocumented env vars | ✅ No gaps — `check:env-coverage` CI enforces completeness | | H. Auth/self-hosted gaps |⚠️ `auth refresh --read-only/--scope` examples missing | | I. Plugin/skills gaps |⚠️ `sentry docs` missing from agentic pages; stale plugin syntax | | J. README/DEVELOPMENT.md drift | ✅ No drift — auto-generated marker sections | --- ### Changes Made **1. Add `sentry docs` and `sentry status` to agentic guidance (I1, I2)** The `sentry docs` command suite (#1457) and `sentry status` command (#1494) are recent additions that are highly relevant for AI agent workflows but were not mentioned in `agentic-usage.md` or `agent-guidance.md`. Added: - New capability in agentic-usage.md: "Query documentation" - New examples: `sentry docs "How do I set up source maps?"` and `sentry status` - New workflow patterns in agent-guidance.md for documentation querying and status checking - New key principle: "Use `sentry docs` for setup questions" - New common mistake entry about fetching docs externally **2. Document install script flags in getting-started.mdx (F1)** The install script accepts `--no-modify-path`, `--no-completions`, and `--no-agent-skills` flags, plus the `SENTRY_INSTALL_DIR` env var. These were documented in the CLI fragment (`cli.md`) but not on the Getting Started page where users encounter the install script. **3. Update plugins/README.md installation syntax (I3)** Replaced deprecated Claude Code `claude plugin marketplace add` / `claude plugin install` commands with current dotagents-based installation and automatic skill installation documentation. **4. Add `auth refresh` scoped examples (H1)** Added `--read-only` and `--scope` examples to the `auth refresh` section in `auth.md` fragment. --- ### Top 5 Most Impactful Fixes (prioritized) 1. **`sentry docs` in agentic pages** — Primary agent tool for documentation queries, invisible without this 2. **Install script flags in getting-started** — CI/Docker users need `--no-agent-skills` etc. 3. **Plugin syntax update** — Deprecated commands that no longer work 4. **`sentry docs` workflow pattern** — Natural addition to detailed agent guidance 5. **`auth refresh` scoped examples** — Minor but useful for agents and CI <div><a href="https://cursor.com/agents/bc-540303b8-6fe0-4e4e-9e70-cacd12705c98?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/8b0c0f35-da5e-409d-984c-5e39518ffb8a"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…nstall flags, plugin syntax (#1514) ## Documentation Audit Report — 2026-08-31 Weekly audit comparing the Sentry CLI implementation (v0.45.0-dev.0) against its documentation. This covers changes since the last merged audit ([#1461](getsentry/cli#1461), 2026-08-24). --- ### Findings Summary | Section | Status | |---------|--------| | A. Undocumented commands | ✅ No gaps — `check:fragments` CI enforces coverage | | B. Undocumented flags | ✅ No gaps — auto-generated from CLI metadata | | C. Missing usage examples | ✅ All 37 fragments have bash examples | | D. Stale descriptions | ✅ No drift — pulled from code at generation time | | E. Missing route mappings | ✅ No gaps — `ROUTE_TO_REFERENCE` replaced with auto 1:1 mapping | | F. Installation gaps |⚠️ Install script flags undocumented in getting-started.mdx | | G. Undocumented env vars | ✅ No gaps — `check:env-coverage` CI enforces completeness | | H. Auth/self-hosted gaps |⚠️ `auth refresh --read-only/--scope` examples missing | | I. Plugin/skills gaps |⚠️ `sentry docs` missing from agentic pages; stale plugin syntax | | J. README/DEVELOPMENT.md drift | ✅ No drift — auto-generated marker sections | --- ### Changes Made **1. Add `sentry docs` and `sentry status` to agentic guidance (I1, I2)** The `sentry docs` command suite (#1457) and `sentry status` command (#1494) are recent additions that are highly relevant for AI agent workflows but were not mentioned in `agentic-usage.md` or `agent-guidance.md`. Added: - New capability in agentic-usage.md: "Query documentation" - New examples: `sentry docs "How do I set up source maps?"` and `sentry status` - New workflow patterns in agent-guidance.md for documentation querying and status checking - New key principle: "Use `sentry docs` for setup questions" - New common mistake entry about fetching docs externally **2. Document install script flags in getting-started.mdx (F1)** The install script accepts `--no-modify-path`, `--no-completions`, and `--no-agent-skills` flags, plus the `SENTRY_INSTALL_DIR` env var. These were documented in the CLI fragment (`cli.md`) but not on the Getting Started page where users encounter the install script. **3. Update plugins/README.md installation syntax (I3)** Replaced deprecated Claude Code `claude plugin marketplace add` / `claude plugin install` commands with current dotagents-based installation and automatic skill installation documentation. **4. Add `auth refresh` scoped examples (H1)** Added `--read-only` and `--scope` examples to the `auth refresh` section in `auth.md` fragment. --- ### Top 5 Most Impactful Fixes (prioritized) 1. **`sentry docs` in agentic pages** — Primary agent tool for documentation queries, invisible without this 2. **Install script flags in getting-started** — CI/Docker users need `--no-agent-skills` etc. 3. **Plugin syntax update** — Deprecated commands that no longer work 4. **`sentry docs` workflow pattern** — Natural addition to detailed agent guidance 5. **`auth refresh` scoped examples** — Minor but useful for agents and CI <div><a href="https://cursor.com/agents/bc-540303b8-6fe0-4e4e-9e70-cacd12705c98?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/8b0c0f35-da5e-409d-984c-5e39518ffb8a"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…nstall flags, plugin syntax (#1514) ## Documentation Audit Report — 2026-08-31 Weekly audit comparing the Sentry CLI implementation (v0.45.0-dev.0) against its documentation. This covers changes since the last merged audit ([#1461](getsentry/cli#1461), 2026-08-24). --- ### Findings Summary | Section | Status | |---------|--------| | A. Undocumented commands | ✅ No gaps — `check:fragments` CI enforces coverage | | B. Undocumented flags | ✅ No gaps — auto-generated from CLI metadata | | C. Missing usage examples | ✅ All 37 fragments have bash examples | | D. Stale descriptions | ✅ No drift — pulled from code at generation time | | E. Missing route mappings | ✅ No gaps — `ROUTE_TO_REFERENCE` replaced with auto 1:1 mapping | | F. Installation gaps |⚠️ Install script flags undocumented in getting-started.mdx | | G. Undocumented env vars | ✅ No gaps — `check:env-coverage` CI enforces completeness | | H. Auth/self-hosted gaps |⚠️ `auth refresh --read-only/--scope` examples missing | | I. Plugin/skills gaps |⚠️ `sentry docs` missing from agentic pages; stale plugin syntax | | J. README/DEVELOPMENT.md drift | ✅ No drift — auto-generated marker sections | --- ### Changes Made **1. Add `sentry docs` and `sentry status` to agentic guidance (I1, I2)** The `sentry docs` command suite (#1457) and `sentry status` command (#1494) are recent additions that are highly relevant for AI agent workflows but were not mentioned in `agentic-usage.md` or `agent-guidance.md`. Added: - New capability in agentic-usage.md: "Query documentation" - New examples: `sentry docs "How do I set up source maps?"` and `sentry status` - New workflow patterns in agent-guidance.md for documentation querying and status checking - New key principle: "Use `sentry docs` for setup questions" - New common mistake entry about fetching docs externally **2. Document install script flags in getting-started.mdx (F1)** The install script accepts `--no-modify-path`, `--no-completions`, and `--no-agent-skills` flags, plus the `SENTRY_INSTALL_DIR` env var. These were documented in the CLI fragment (`cli.md`) but not on the Getting Started page where users encounter the install script. **3. Update plugins/README.md installation syntax (I3)** Replaced deprecated Claude Code `claude plugin marketplace add` / `claude plugin install` commands with current dotagents-based installation and automatic skill installation documentation. **4. Add `auth refresh` scoped examples (H1)** Added `--read-only` and `--scope` examples to the `auth refresh` section in `auth.md` fragment. --- ### Top 5 Most Impactful Fixes (prioritized) 1. **`sentry docs` in agentic pages** — Primary agent tool for documentation queries, invisible without this 2. **Install script flags in getting-started** — CI/Docker users need `--no-agent-skills` etc. 3. **Plugin syntax update** — Deprecated commands that no longer work 4. **`sentry docs` workflow pattern** — Natural addition to detailed agent guidance 5. **`auth refresh` scoped examples** — Minor but useful for agents and CI <div><a href="https://cursor.com/agents/bc-540303b8-6fe0-4e4e-9e70-cacd12705c98?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/8b0c0f35-da5e-409d-984c-5e39518ffb8a"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…511) ## Bug `hasActiveOAuthGrant()` in `src/lib/scope-recovery.ts` silently swallowed all exceptions from `runtime.getAuthSource()`. This violated the project's silent-catch prohibition and made it impossible to diagnose database errors that could prevent the OAuth scope recovery flow from activating. ## Root cause The `catch` block returned `false` without any logging, so failures in `getAuthSource()` (e.g. DB corruption, missing tables) were completely invisible even with `--verbose`. ## Reproduction Any database error during `getAuthSource()` would be silently swallowed, causing the CLI to skip OAuth scope recovery without any diagnostic output. ## Fix - Added `logger.debug()` to the catch block so the error is visible with `--verbose` - Updated the silent-catch baseline to reflect the fix <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
…511) ## Bug `hasActiveOAuthGrant()` in `src/lib/scope-recovery.ts` silently swallowed all exceptions from `runtime.getAuthSource()`. This violated the project's silent-catch prohibition and made it impossible to diagnose database errors that could prevent the OAuth scope recovery flow from activating. ## Root cause The `catch` block returned `false` without any logging, so failures in `getAuthSource()` (e.g. DB corruption, missing tables) were completely invisible even with `--verbose`. ## Reproduction Any database error during `getAuthSource()` would be silently swallowed, causing the CLI to skip OAuth scope recovery without any diagnostic output. ## Fix - Added `logger.debug()` to the catch block so the error is visible with `--verbose` - Updated the silent-catch baseline to reflect the fix <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
…511) ## Bug `hasActiveOAuthGrant()` in `src/lib/scope-recovery.ts` silently swallowed all exceptions from `runtime.getAuthSource()`. This violated the project's silent-catch prohibition and made it impossible to diagnose database errors that could prevent the OAuth scope recovery flow from activating. ## Root cause The `catch` block returned `false` without any logging, so failures in `getAuthSource()` (e.g. DB corruption, missing tables) were completely invisible even with `--verbose`. ## Reproduction Any database error during `getAuthSource()` would be silently swallowed, causing the CLI to skip OAuth scope recovery without any diagnostic output. ## Fix - Added `logger.debug()` to the catch block so the error is visible with `--verbose` - Updated the silent-catch baseline to reflect the fix <div><a href="https://cursor.com/agents/bc-2ebe539c-e397-4e60-b8b7-8cca4c40410c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/automations/95624600-485e-4461-829e-6b76f086c473"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/view-automation-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/view-automation-light.png"><img alt="View Automation" width="141" height="28" src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a> </div> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Miguel Betegón <miguelbetegongarcia@gmail.com>
`transactions` is no longer a valid dataset for alerts (the same use cases are supported by spans). All existing alerts have been migrated off of those datasets and creating new alerts that use them has been blocked on all billing plans. Remove all references to transactions datasets from alerts code and skills. See BROWSE-682. --------- Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
`transactions` is no longer a valid dataset for alerts (the same use cases are supported by spans). All existing alerts have been migrated off of those datasets and creating new alerts that use them has been blocked on all billing plans. Remove all references to transactions datasets from alerts code and skills. See BROWSE-682. --------- Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
`transactions` is no longer a valid dataset for alerts (the same use cases are supported by spans). All existing alerts have been migrated off of those datasets and creating new alerts that use them has been blocked on all billing plans. Remove all references to transactions datasets from alerts code and skills. See BROWSE-682. --------- Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
`transactions` is no longer a valid dataset for alerts (the same use cases are supported by spans). All existing alerts have been migrated off of those datasets and creating new alerts that use them has been blocked on all billing plans. Remove all references to transactions datasets from alerts code and skills. See BROWSE-682. --------- Co-authored-by: jared-outpost[bot] <jared-outpost[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
This PR addresses issue CLI-1WP, where `SeerError: Seer is not enabled
for this organization.` was being reported to Sentry for self-hosted
instances.
**Problem:**
When `sentry issue explain` or `sentry issue plan` is run against a
self-hosted Sentry instance where Seer is disabled, the CLI receives a
403 HTTP response. This is converted into a `SeerError('not_enabled')`.
Because `SeerError` extends `CliError` (not `ApiError`), and
`classifySilenced()` had no specific handling for `SeerError`, these
expected feature-gate conditions were being captured as Sentry issues,
polluting the issue tracker. For self-hosted users, Seer cannot be
enabled or trialed, making these reports unactionable noise.
**Solution:**
1. Added `"seer_unavailable_self_hosted"` to the `SilenceReason` union
type in `packages/cli/src/lib/error-reporting.ts`.
2. Modified `classifySilenced()` to return this new reason when a
`SeerError` occurs and the CLI is *not* pointed at a SaaS (sentry.io)
instance. This ensures that the error is silenced only for self-hosted
environments.
3. Added a `seer_reason` attribute to the `cli.error.silenced` metric
when a `SeerError` is silenced. This allows tracking the volume of these
events without creating Sentry issues.
4. Ensured that `SeerError`s on SaaS instances continue to be captured,
as this is an intentional signal for marketing dashboards.
5. Added unit tests to verify that `SeerError`s are silenced on
self-hosted configurations and captured on SaaS, and that the correct
metric attributes are emitted.
This change prevents expected feature-gate conditions on self-hosted
Sentry from being reported as CLI errors, while preserving the intended
capture behavior for SaaS environments.
<!-- SEER_FIXES_SENTRY_ISSUE -->
Fixes
[CLI-1WP](https://sentry.sentry.io/issues/7513541924/?seerDrawer=true)
<!-- /SEER_FIXES_SENTRY_ISSUE -->
<sub>`@sentry <feedback>`: Autofix iterates on these changes</sub>
<sub>`@sentry stop iterating`: Autofix stops iterating on this run</sub>
<sub>This PR was automatically generated by Sentry. You can [adjust this
setting](https://sentry.sentry.io/settings/projects/cli/seer/) at any
time.</sub>
Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Sol <noreply@openai.com>
Import getsentry/cli main at c1337081e382f28a67a0f7594b542e9429402d1c via filtered commit 5eb9484. CLI docs are unchanged upstream. Preserve Toolkit-specific CLI test additions. Co-Authored-By: GPT-6 Sol <noreply@openai.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
packages/cliandapps/cli-docswith their unsquashed history from CLI release0.45.0, then advance the imported CLI history to the latestgetsentry/climain.Import provenance
03f636f8d1fe6553acf22595eb029ddc8efc79eb; initial filtered CLI tip:d5ffbcefa8977382127dc752dd0c78e34fc90ccd; initial filtered docs tip:6620138c1cb167babb45987cb2fc499adc00805a.7d81b40ab93b2f57240cdab3d1b813963c18b062; docs86902bac7b2e4ac072ec667b4ab5b11d310450b0. Both imported trees were byte-identical to their source release trees. The release commit made no docs-tree change, so the filtered docs tip is its parent.fc1140092883409046438c8bb5d6f7f939eb9659, with filtered CLI tip6b08e9029dc7e092bfebaa3870ca116e7dfdfc89and filtered docs tip4358ec2729a60ef034f3866680fc5fd7bce62ce0.c1337081e382f28a67a0f7594b542e9429402d1c, imported as filtered CLI commit5eb94845654fa8e3856a8b0473cb24261c3169d0by merge8ff191c70201086a2b391ab3999ef63f6afaeb1d. Its filtered parente34a7c2b31f0501328ab43b4a5a5be31639b8322maps to upstream6f9d32308b58633b00fbfe67f288d956d4419d9c. The latest upstream commit changes only CLI error reporting and its tests; the upstream docs tree is unchanged. The filtered ancestry retains the earlier import history. Toolkit-specific integration changes remain in the destination tree.Validation
pnpm run tsc), and workspace lint pass. Lint reports two pre-existing warnings outside this change.pnpm run testreached the MCP core suite after the CLI suite passed, then hit the local command's 10-minute timeout. Exact-head CI validates the remaining packages.Full-range
git diff --checkreports trailing whitespace inherited from the original byte-identical release import. Integration commits passgit diff --check; preserving imported history avoids rewriting the source commits.Closes getsentry/cli#1239.
Administrative migration is tracked separately in getsentry/cli#1597. The source repository must not be archived until that workflow has migrated settings, open PRs have destination replacements, this integration PR has merged, and release/deployment cutover gates pass.