Install & modes

Shipmoor Team
June 11, 2026
3 min read

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.

The harness installs per project: from your repo root, one command wires the loop into the agent(s) you use, and one config key decides how intrusive the loop is.

Prerequisites

  • The shipmoor CLI installed (curl -fsSL https://dl.shipmoor.dev/install.sh | bash) and signed in with the agent_harness entitlement — check with shipmoor-harness status.
  • For the Claude Code adapter: a claude binary at or above the hook-schema minimum; the adapter probes it and refuses older builds, naming both versions.

Install

shipmoor-harness install claude        # or aider | codex | cursor | all
aider: wrote .aider.conf.yml
claude: wrote .claude/settings.json
codex: wrote AGENTS.md
cursor: wrote .cursor/rules/shipmoor-harness.md

The agent_harness entitlement is checked once, up front. Every install is marker-wrapped, byte-idempotent, and reversible: re-running changes nothing, your own config in the same files is preserved, and shipmoor-harness uninstall <agent> removes exactly the managed block — restoring your pre-install file shape. A pre-existing, unmarked Shipmoor footprint is reported as a conflict rather than overwritten.

If Agent Skills are installed in the same repo, the two coexist — distinct managed blocks, each owned by its installer.

Inspect

shipmoor-harness status
#   CLI:    /…/shipmoor (v0.4.0)
#   Caps:   agent_harness, intent_scan, repair_guidance
#   State:  ic_active
#   Adapters:
#     · aider … · cursor (soft)
#   Watch:  no report yet (run `shipmoor-harness watch`)

shipmoor-harness status --json    # shipmoor.harness.status.v1 — script against this

status is informational and always exits 0. If it shows Caps: none or a locked state, install will refuse with the upgrade message — sign in first (shipmoor login).

The three modes

shipmoor-harness mode feedback
ModeBehavior
observeScan and record; never interrupt. The default.
feedbackRoute concise findings back into the agent’s context after each edit.
blockStop the agent’s tool call (or exit non-zero) on a threshold breach.

mode writes the harness: block of .shipmoor.yaml with targeted line surgery — every other key, comment, and blank line in the file is preserved:

harness:
  mode: feedback          # observe | feedback | block
  max_feedback_cycles: 3  # caps re-prompts so a loop never spins
  watch:
    debounce_ms: 750

block requires the intent_scan entitlement; without it, the mode degrades to feedback unless you pass --force-structural (then status reports a mode_block_without_intent warning). The bounded loop (max_feedback_cycles) guarantees the agent is never trapped re-prompting forever — when the cap is reached, whatever remains is surfaced instead.

Exit codes (the harness’s own)

These are the shipmoor-harness wrapper’s codes — distinct from the CLI’s 0/1/2/3 scan contract it consumes:

SurfaceCodes
status / mode / install / uninstall0 ok · 2 harness error
codex wrapper0 clean · 1 findings remain (block) · 2 scan failed · 3 Codex failed
watch0 ok/stopped · 1 block breach · 2 gate locked
hook claude-code0 silent/feedback · 2 block (stderr fed to the agent)

Environment overrides

  • SHIPMOOR_BIN — absolute path to the shipmoor CLI (else PATH, then ~/.shipmoor/bin/shipmoor).
  • SHIPMOOR_CLAUDE_BIN — the claude binary the Claude adapter probes.

Next

Last updated on June 11, 2026

Was this article helpful?

Your response is saved on this device.