In release — preview. This surface is fully built and in the release process; it is not yet generally available. Treat the commands and behavior here as preview until GA.
Each agent gets the loop in the form it natively understands. Four adapters ship today; all are installed with shipmoor-harness install <agent> and removed cleanly with uninstall.
| Agent | Wiring | Surface |
|---|---|---|
| Claude Code | PostToolUse + Stop lifecycle hooks | .claude/settings.json |
| Aider | A managed lint-cmd | .aider.conf.yml |
| Codex | An AGENTS.md guidance block + a runtime wrapper | AGENTS.md / shipmoor-harness codex |
| Cursor | A rules file pointing at the watcher (soft) | .cursor/rules/shipmoor-harness.md |
Claude Code — lifecycle hooks
The deepest integration: hooks injected into the top-level hooks key of .claude/settings.json (where Claude Code reads them), beside any hooks you already have, with provenance recorded under a // shipmoor:harness sibling key so uninstall restores your exact pre-install file. The adapter probes your claude version first and refuses builds below the hook-schema minimum, naming both versions.
After every Edit/Write/MultiEdit/NotebookEdit, the PostToolUse hook scans the changed file and blocks or advises per the configured mode; the Stop hook runs a final pass. The harness never edits CLAUDE.md — that file belongs to Agent Skills. See The self-correction loop for a full worked cycle.
Aider — lint-cmd
Aider already has a repair loop: it re-prompts on a failing lint command. The adapter plugs Shipmoor into it by managing a lint-cmd block in .aider.conf.yml running:
shipmoor scan --changed --no-color --fail-on high
Exit 1 on a high finding drives Aider’s own fix-and-retry behavior — no wrapper needed. If you already have a lint-cmd, the install reports a conflict instead of replacing it; pass --replace-existing to take it over (recorded as a warning in status).
Codex — the wrapped runtime
Codex is driven through a wrapper rather than hooks:
shipmoor-harness codex -- <your codex args>
The wrapper forwards args, env, and cwd to Codex, snapshots the tree, then scans what changed and re-prompts Codex with the findings — bounded by max_feedback_cycles. Its exit codes: 0 clean · 1 findings remain (block) · 2 scan failed · 3 Codex itself failed. install codex additionally writes a managed guidance block into AGENTS.md.
Cursor — soft, via the watcher
Cursor has no hook surface, so its adapter is soft: install cursor writes a fully harness-owned .cursor/rules/shipmoor-harness.md instructing Cursor to consult the watcher’s .shipmoor/last-watch.json findings. Run shipmoor-harness watch beside your Cursor session as the event source. status reports the adapter as soft alongside the watch state.
Anything else
For agents not listed, the watcher works beside any tool that edits files, and the JSON contracts (scan.v1, status.v1) make custom wiring straightforward — see Output contracts & schemas.
Next
- The self-correction loop — block → fix → clear on Claude Code.
- Watch mode — the agent-agnostic fallback.
- Using skills with your agent — the behavior layer that pairs with this runtime.