The Shipmoor IDE extension surfaces scan findings as native editor diagnostics: squiggles in your code, a count in the status bar, and remediation hints inline. It reimplements neither detection nor auth; it shells out to your local, signed-in shipmoor CLI for everything. This page walks you from a fresh install to your first squiggle.
Prerequisites
The extension is a thin client over the CLI, so the CLI does the real work. Before the extension can emit a single diagnostic you need:
-
The
shipmoorCLI installed. The extension does not bundle it.curl -fsSL https://dl.shipmoor.dev/install.sh | bashThe installer drops a single binary in
~/.shipmoor/bin. The extension’sminimumCliVersionis 0.4.1; we recommend 0.6.0 or newer so the latest contracts, the language-server runner, the agent and Claim Check editor layers, and the advisory Code Review surface are all available.shipmoor version # shipmoor 0.6.0 -
A signed-in session on an IC plan. The extension turns on diagnostics only when
shipmoor capabilitiesreports theide_extension_proentitlement.shipmoor login
See Sign in & licensing for the login flow and Capabilities & entitlements for what ide_extension_pro unlocks.
Install the extension
The extension installs for free; it stays in an empty state until the CLI reports an active entitlement.
| Editor | How to install |
|---|---|
| VS Code | Open the Extensions view, search Shipmoor, and install it from the VS Code Marketplace. |
| Cursor, VSCodium, Windsurf, and other VS Code forks | Search Shipmoor on Open VSX, or install the downloaded .vsix directly. |
The extension is published as v0.4.0 on the VS Code Marketplace and Open VSX. It includes the agent-aware and Claim Check editor layers, which switch on automatically when your plan carries the
agent_harness/intent_scanentitlements. See the overview.
How activation works
The extension activates on editor startup and whenever you open a python, typescript, javascript, or go file. On activation it reads shipmoor capabilities to check for ide_extension_pro, then settles into one of these gate states:
| Gate state | What you see |
|---|---|
active | Diagnostics are on. The extension scans and renders squiggles. |
grace | Diagnostics are on. You’re inside a grace window after a lapsed or expiring license. |
signin | Empty state with a one-click Sign In action. |
locked | Empty state with a one-click Upgrade action (no IC entitlement). |
setup | Empty state with a one-click Install CLI or Refresh entitlement action (the CLI is missing or the entitlement is stale). |
The empty state is intentional: with no entitlement the extension emits no diagnostics and points you at the single action that will fix it. It re-checks your entitlement every 30 minutes by default, so a fresh shipmoor login or an expiring grace period is picked up without reloading the window. Tune the interval with shipmoor.entitlementCheckIntervalMinutes.
Binary discovery
The extension finds the CLI in this order and uses the first hit:
- The
shipmoor.binaryPathsetting, if set. ~/.shipmoor/bin/shipmoor(the installer’s default location).- Your
PATH.
If discovery fails you land in the setup empty state with an Install CLI action. Run Shipmoor: Run Doctor to print exactly which path was tried and why it was rejected.
Settings
All settings live under the shipmoor.* namespace in your editor settings. The defaults are tuned for the CLI runner; the language-server runner makes the on-type path fast enough to enable.
| Setting | Purpose | Default |
|---|---|---|
shipmoor.binaryPath | Absolute path to the shipmoor CLI; leave empty to auto-detect. | "" |
shipmoor.runner | Scan transport: auto picks the language server when supported, else the per-scan CLI; lsp and cli force one. | auto |
shipmoor.severityThreshold | Lowest severity shown as a squiggle (lower findings are still counted). | low |
shipmoor.scanOnSave | Scan a file when you save it. | true |
shipmoor.scanOnType | Scan while you type, after a short pause. | false |
shipmoor.debounceMs | Milliseconds to wait after the last keystroke before scanning on type. | 500 |
shipmoor.scanOnStartup | Scan the whole workspace when it opens. | true |
shipmoor.scanTimeoutMs | Abort a scan that runs longer than this. | 30000 |
shipmoor.enabledLanguages | Language ids to scan on save, open, and type. | ["python","typescript","javascript","go"] |
shipmoor.diagnostics.showRemediation | Append the one-line remediation under each finding’s message. | true |
shipmoor.statusBar.enabled | Show the Shipmoor integrity indicator in the status bar. | true |
shipmoor.autoSaveAfterIgnore | Save the file automatically after inserting a suppression comment. | false |
shipmoor.entitlementCheckIntervalMinutes | How often to re-check your entitlement (5–1440). | 30 |
Commands
Open the Command Palette (Cmd/Ctrl+Shift+P) and type Shipmoor to see the full set. Scan and diagnostic commands are available only in the active or grace gate states; the sign-in and setup commands are always available so you can recover from an empty state.
| Command | What it does |
|---|---|
| Shipmoor: Scan Current File | Scan the active editor file. |
| Shipmoor: Scan Workspace | Scan the whole workspace. |
| Shipmoor: Scan Changed Files | Scan only files changed against your working tree. |
| Shipmoor: Clear Diagnostics | Remove all Shipmoor squiggles from the editor. |
| Shipmoor: Show Problems | Jump to the Problems panel filtered to Shipmoor. |
| Shipmoor: Run Doctor | Print CLI discovery, version, and entitlement diagnostics to the output channel. |
| Shipmoor: Restart Language Server | Restart the language-server runner. |
| Shipmoor: Set Intent | Record the task the current change should satisfy, so Claim Check checks the diff against it. Shown when your plan includes intent_scan. |
| Shipmoor: Clear Intent | Clear the recorded task intent. |
| Shipmoor: Send this finding back to the agent | A code action on an agent-attributed finding; posts it (metadata only) to the Agent Harness inbox. |
| Shipmoor: Sign In | Start the shipmoor login flow. |
| Shipmoor: Refresh Entitlement | Re-read shipmoor capabilities immediately. |
| Shipmoor: Open Billing | Open your Shipmoor billing page. |
| Shipmoor: Open Settings | Jump to the Shipmoor settings section. |
| Shipmoor: Open CLI Install Instructions | Open the CLI install docs. |
Verify the install
- Make sure
shipmoor versionreports0.4.1or newer and that you’ve runshipmoor login. - Open a
python,typescript,javascript, orgofile that has a known issue, for example a phantom import that references a package missing from your manifest. - A squiggle appears on the offending line, and the status bar shows the finding count. Hover the squiggle for the message and, with
shipmoor.diagnostics.showRemediationon, the one-line fix hint.
If no squiggle appears, run Shipmoor: Run Doctor: it reports which gate state you’re in and, in setup, exactly which binary path failed. A missing or unauthenticated CLI is the most common cause.
Next
- IDE Extension overview: what the extension does and how it fits the CLI-backed loop.
- Sign in & licensing: the
shipmoor loginflow the extension depends on. - Capabilities & entitlements: what
ide_extension_prounlocks and how grace works.