CLI reference

Shipmoor Team
August 29, 2026
10 min read

The shipmoor claim-check surface in the universal 0.10.0 CLI. This is the command you run after your agent finishes to check the change against what the task asked for.

usage: shipmoor claim-check [-h] [--config CONFIG] [--floor-only]
                             [--verbose]
                             [--acceptance ACCEPTANCE]
                             [--staged | --diff DIFF | --all]
                             [--from FROM_REF] [--to TO_REF]
                             [--intent-ticket PATH] [--intent-session PATH]
                             [--intent-prompt TEXT] [--agent AGENT]
                             [--loop] [--fix-agent FIX_AGENT]
                             [--max-rounds MAX_ROUNDS] [--vsa-out VSA_OUT]
                            [--trace-out TRACE_OUT] [--json] [--no-color]
                            [--terse]
                            [target]

shipmoor claim-check is a peer subcommand of shipmoor scan. Free includes five top-level Claim Check invocations per month; Pro is unlimited. Free allowance admission occurs after validation and before engine, judge, runner, evidence, progress, or output work.

Positional argument

ArgumentDefaultMeaning
target.Project directory or repo root to check.

Selectors: what gets checked

By default shipmoor claim-check checks your working tree (tracked changes plus untracked files) as a diff. The selectors below change that. --staged, --diff, and --all are mutually exclusive. --from and --to form a committed range and are given together.

FlagWhat it checks
(none)Working tree: tracked changes plus untracked files.
--stagedStaged changes only (the index, like git diff --staged).
--diff <spec>A raw git diff spec you provide, for example main...HEAD.
--allThe whole tree, not just the change surface.
--from <ref> --to <ref>A committed range.
shipmoor claim-check .                          # working tree (default)
shipmoor claim-check . --staged                 # the staged index
shipmoor claim-check . --diff main...HEAD       # a raw diff spec
shipmoor claim-check . --from origin/main --to HEAD   # a committed range
shipmoor claim-check . --all                    # whole tree

Floor-only mode: --floor-only

FlagMeaning
--floor-onlyRun the deterministic floor and synthesizer, with no judge. The fully deterministic path: no model, no secret, reproducible.
shipmoor claim-check . --floor-only

With no --agent, the run is already floor-only in practice: the judge only ever runs when an agent is configured. --floor-only makes that local behavior explicit.

Acceptance set: --acceptance

FlagDefaultMeaning
--acceptance <path>.shipmoor/acceptance.yamlPath to the acceptance set: the human-authored, editable list of obligations the change is checked against.
shipmoor claim-check . --acceptance .shipmoor/acceptance.yaml

Use shipmoor claim-check init to scaffold a starter set. If no acceptance file is committed at that path, the gate can auto-derive a draft from the resolved intent instead; that draft is disclosed as unapproved and never counts as an approved pass. See Turning on the gate for the authoring modes and what “approved” means.

Intent sources

shipmoor claim-check resolves intent from three flags, in precedence order. These are distinct from the older three-flag surface on claim-check resolve (below).

FlagMeaning
--intent-ticket <path>Highest-precedence intent source. Freezes intent from a ticket file.
--intent-session <path>Freezes the first non-empty user turn from an agent-session transcript. Outranked by --intent-ticket; outranks --intent-prompt.
--intent-prompt <text-or-path>The task prompt (inline text or a path to it). Outranked by --intent-ticket and --intent-session; outranks the acceptance file’s own stated goal.
shipmoor claim-check . --intent-ticket tickets/PROJ-482.md
shipmoor claim-check . --intent-session .shipmoor/session.jsonl
shipmoor claim-check . --intent-prompt "Add a Stripe webhook handler for failed payments"

If neither is given, Shipmoor falls back to whatever goal the acceptance set itself states. See Providing intent for how precedence and confidence interact.

The judge: --agent

FlagMeaning
--agent <preset-or-cmd>The read-only evidence agent, including the intent-fidelity judge. Bare presets are claude, codex, and cursor. Any raw command is shlex-split and run as a subprocess. Optional; with no agent configured, model evidence is disclosed as not run or abstained.
shipmoor claim-check . --agent claude

The built-in mappings are claude to claude -p, codex to codex exec --skip-git-repo-check --sandbox read-only, and cursor to cursor-agent -p --output-format text --mode ask --force. Codex and Cursor remain read-only evidence agents. A raw command (for example --agent "claude -p --model sonnet", or your own script) runs unchanged. See BYO-Judge for the request and response contract.

The judge can only BLOCK or ABSTAIN, never pass an obligation on its own. Shipmoor’s default calibration samples a judgment three times (K=3) and needs 2-of-3 agreement to confirm a block; a block also has to survive actually re-running its cited test or command hermetically at the reviewed head before it counts. Below a mean confidence of 0.8 the judge abstains rather than blocks. A green verdict always rides the deterministic floor, never the judge alone. See BYO-Judge for the full mechanics.

Bounded remediation loop

FlagMeaning
--loopOpt into bounded remediation rounds. Requires --fix-agent; intent and acceptance are frozen once, then evidence is re-run after each authorized edit.
--fix-agent <preset-or-cmd>The sole mutation-capable agent in loop mode. Presets are claude, codex, and cursor; raw commands are accepted.
--max-rounds <n>Maximum measured rounds. Defaults to 3, must be at least 1, and has a hard cap of 10. Valid only with --loop.

Plain shipmoor claim-check remains a single read-only pass. --agent supplies read-only evidence; it never grants edit authority.

Output flags

FlagMeaning
--vsa-out <path>Write the VSA attestation to this path (default .shipmoor/claim-check.vsa.json).
--trace-out <path>Write the per-probe trace to this path (machine-readable, for debugging and reproducibility).
--jsonWrite the shipmoor.scan.v1 JSON contract with the claim check under change_results[].
--no-colorDisable terminal color in the human output.
--terseCollapse the result to a single-line local status.
--verbosePrint Claim Check phase and producer progress to stderr.

Without --terse, the default output is the full verdict card: the resolved intent, the per-item detail for every acceptance criterion, and the badge. There is no separate flag to expand detail; full detail is simply what you get unless you ask for --terse.

shipmoor claim-check . --vsa-out .shipmoor/claim-check.vsa.json --json > claim-check.json

Claim Check has no --output flag. JSON is written to stdout; redirect it in the shell when you need a file.

Config

FlagMeaning
--config <path>Path to the project config file (otherwise discovered from target).

Defaults come from .shipmoor.yaml. The precedence is flags, then config, then built-in defaults:

review:
  agent: "claude"   # shared with Code Review; the judge reuses this same key

claim_check:
  acceptance: ".shipmoor/acceptance.yaml"
  authoring_mode: "author"   # author | auto | hybrid
  policy_path: ".shipmoor/floor_policy.yaml"
KeyDefaultNotes
review.agent(unset)The evidence-agent command. There is no separate claim_check.agent key: this is the same key Code Review uses, so one setting configures both. Bare presets are claude, codex, and cursor; raw commands remain supported (see BYO-Judge). Optional; omit to run the floor alone.
claim_check.acceptance.shipmoor/acceptance.yamlPath to the acceptance set.
claim_check.authoring_mode"author"author (hand-authored, zero model), auto (LLM extraction only), or hybrid (auto draft plus a human-confirm step). See Turning on the gate.
claim_check.policy_path.shipmoor/floor_policy.yaml (ships a default)Path to the floor policy file. Toggles a narrow set of optional cross-cutting requirements; it cannot loosen the core floor. See Turning on the gate.

Subcommands

shipmoor claim-check init

Scaffold a starter acceptance set:

shipmoor claim-check init [--force] [target]
FlagMeaning
--forceOverwrite an existing acceptance file at the target path.

Writes .shipmoor/acceptance.yaml. Edit the file to fill in the obligations for your change, in plain language. The deterministic probes are pinned to specific acceptance criteria from this set.

shipmoor claim-check freeze

Compile the editable acceptance set into the frozen pin that later runs verify:

shipmoor claim-check freeze [target] [--acceptance PATH] \
  [--intent-ticket PATH] [--intent-session PATH] [--intent-prompt TEXT] [--json]

The command writes .shipmoor/acceptance.json for you to review and commit beside the YAML. Pass the same intent source you will use for the run because the frozen intent is part of the pin’s identity. freeze computes no verdict and runs no model.

shipmoor claim-check resolve

An intent-only preview utility: resolve the intent without a diff (no probes, no VSA). It has its own, older three-flag surface, separate from the main gate’s --intent-ticket / --intent-prompt:

shipmoor claim-check resolve [target] [--intent TEXT] [--prompt TEXT] [--session PATH] [--json]
FlagMeaning
--intent <text>One-line goal.
--prompt <text>The agent prompt that produced the change.
--session <path>Agent session transcript; the first user turn becomes the intent.
--jsonMachine output: goal_text, confidence, sources.

resolve also reads .shipmoor/intent.txt from the target directory if present. Use it to sanity-check what Shipmoor would resolve as intent before wiring a full claim check:

shipmoor claim-check resolve --intent "…" --json
shipmoor claim-check resolve --session run.jsonl

shipmoor claim-check probes

Inspect the probe library. Three subcommands, unchanged:

shipmoor claim-check probes gaps        # show known coverage gaps
shipmoor claim-check probes scaffold    # scaffold a starter probe definition
shipmoor claim-check probes coverage    # show probe coverage by language / file type

Exit codes

shipmoor claim-check returns one of four verdicts, and the exit code follows unconditionally from it. There is no flag or config key that changes this mapping.

CodeVerdict / causeWhen
0READYThe deterministic floor is green, no judge block is confirmed, and nothing required is left underspecified.
0READY_WITH_GAPSThe floor is green and nothing is blocked, but something non-required is still open or unresolved.
1BLOCKEDAny deterministic-floor red, always; or the floor is green but a judge block is confirmed.
1INCONCLUSIVEThe floor is green, nothing is blocked, but a required item is abstained or undecided, routing to a human.
2usage errorBad flags, a git or ref or config error, or an --agent command that cannot be launched.
3engine crashAn operational failure: the agent ran but the engine errored, or a transport or timeout failure the engine could not recover from.

So:

  • Verdict READY or READY_WITH_GAPS? Exit 0.
  • Verdict BLOCKED or INCONCLUSIVE? Exit 1, unconditionally. There is no policy flag that softens this.
  • Authentication or allowance denied? Claim Check does not execute; human-facing guidance remains on stderr for machine output.
  • Engine crash or an operational failure the engine could not recover from? Exit 3.

This mapping is unconditional: it is not a default that a config key can override. Self-managed CI currently supports Scan only.

Next

Last updated on August 29, 2026

Was this article helpful?

Your response is saved on this device.