IDE

Shipmoor Team
June 30, 2026
5 min read

The Shipmoor VS Code extension brings the advisory reviewer into your editor. It runs the same shipmoor review you would run in the terminal, and renders its findings as advisory diagnostics that are deliberately kept separate from the structural scan: different severity, different colour, different source, and never in your problem counts.

Install

Install the Shipmoor extension (publisher shipmoor) from the VS Code Marketplace, or from Open VSX for VS Code forks (Cursor, VSCodium, Windsurf). The extension shells out to the shipmoor CLI, so you also need the CLI on your PATH. The advisory review surface needs a CLI build that has shipmoor review, which ships in 0.6.0 and newer (see the Quickstart). Sign in with shipmoor login for the cli_pro entitlement.

For the full editor install and activation flow, including binary discovery and entitlement states, see Install and activate.

The commands

The extension contributes two review commands (Command Palette, then “Advisory Review”):

Command IDPalette titleWhat it reviews
shipmoor.reviewChangedFilesAdvisory Review: Changed FilesYour working-tree changes (shells shipmoor review --json --no-color).
shipmoor.reviewCurrentFileAdvisory Review: Current FileThe active file (shells shipmoor review <path> --json --no-color).

Review is manual. Unlike the structural scan (which can run on save, on type, or on open), these commands run only when you invoke them. Both are gated: they appear in the palette only when your entitlement state is active or grace (when: shipmoor.entitlementState == active || shipmoor.entitlementState == grace), and the handlers re-check, so a keybinding cannot fire them while locked.

How review findings appear

Review findings are rendered to be unmistakably advisory and structurally distinct from scan findings:

AspectStructural (scan)Advisory (review)
Diagnostic severityMapped from finding severity (Error, Warning, Information, or Hint)Always Information, never Error or Warning
Diagnostic sourceShipmoorShipmoor (advisory)
Diagnostic collectionshipmoorshipmoor-review (a separate collection)
Messagethe finding messageprefixed [advisory] …
Counted in the status bar?YesNo

Three things make this robust:

  1. Information-only. Advisory findings are always mapped to DiagnosticSeverity.Information, regardless of the severity the model assigned. Model opinions never render as red (Error) or yellow (Warning) squiggles.

  2. A separate diagnostic collection. Review findings live in their own shipmoor-review collection, independent of the structural shipmoor collection. VS Code keys collections independently, so a file can show both a structural defect and an advisory comment without either clobbering the other.

  3. Excluded from the status-bar counts. The status bar’s “integrity” totals count only diagnostics whose source is exactly Shipmoor. Advisory findings carry Shipmoor (advisory), so they never inflate your problem count. The status bar stays an honest tally of structural issues.

If the finding’s position could not be resolved (it anchors to line 1), the title gets a (position approximate) note. Whether a one-line suggested fix is appended under each comment is controlled by shipmoor.review.showRemediation (default true), which falls back to the shared shipmoor.diagnostics.showRemediation.

Settings

SettingTypeDefaultMeaning
shipmoor.review.timeoutMsnumber (1000 to 1800000)180000Abort an advisory review run longer than this. It is higher than the scan timeout because a bring-your-own-agent review is slower.
shipmoor.review.showRemediationbooleantrueAppend the suggested fix under each advisory comment.

Gating and entitlement loss

Review is gated on the cli_pro entitlement (surfaced as the extension’s entitlement state). When the gate is locked, the review commands disappear from the palette and cannot be invoked. If your entitlement is lost mid-session, for example a subscription lapses while a review is running, the extension detects the shipmoor.paid_feature_error.v1 signal the CLI writes to stderr, clears the advisory collection (removing stale advisory squiggles), and re-checks entitlement. No error toast is shown. The advisory findings simply stop appearing.

Explain and send-to-agent

Two actions work on advisory findings:

  • Explain this finding. The same explain panel that works on structural findings also resolves advisory ones (it looks the finding up in either collection). It opens a panel with the rule, the why (root_cause), the fix (recommendation), and a docs link.

  • Send to agent. This hands a finding back to a running agent harness session to be fixed. It is the editor end of the review then fix loop. Notably, advisory (review) findings are send-back-eligible without any agent attribution: a finding with category: "code_review" can be sent back even if it did not come from an agent-driven session, because the intended flow is exactly this: you run a review, you see a finding, you send it back, then the agent delivers a fix. This action needs a running harness; if none is running you get a prompt to start one. See AI coding agents.

See also

Last updated on June 30, 2026

Was this article helpful?

Your response is saved on this device.