Providing intent

Shipmoor Team
June 11, 2026
4 min read

Claim Check compares a change against what it was asked to do — so it needs to know what was asked. This page covers the four ways to supply that intent, how Shipmoor decides how much to trust it (confidence), and why that trust level matters downstream.

When the claim check appears

The claim check rides on a diff-bearing scan — --changed, --staged, --diff <range>, or --patch <file> — with at least one intent source. A plain filesystem scan has no changeset to judge, and a scan with no intent is unchanged from a plain Community scan.

The four sources

In precedence order:

SourceHowTypical confidence
One-line goal--intent "add a failed-payment webhook"low
Agent prompt--prompt "$PROMPT" — the prompt that produced the changelow
Session transcript--session run.jsonl — the first user turn becomes the intentfrom the first user turn
Manual file.shipmoor/intent.txt in the scanned directorylow
shipmoor scan --staged \
  --intent "Add a Stripe webhook handler for failed payments (payment_intent.payment_failed)"

The --session source does double duty: besides resolving the intent from the first user turn, it ingests the agent’s plan (masked, opt-in) and compares it to the diff — see plan drift in Reading the verdict. Claude Code and Cursor transcripts are supported; other shapes degrade gracefully (the first user turn still works, no plan is ingested).

The intent file is the convenient form for CI and agent workflows — the shipmoor-intent-contract skill maintains one for you.

Agreement raises confidence

Confidence answers: how sure are we about what the change was meant to do? It’s reported on the Source: line of every claim check:

Intent: As a user I want every Flask response to carry an X-Request-ID header — add a small helper that sets it
  Source: prompt:--prompt (prompt), manual:--intent (manual_string) · agreement: consistent · Confidence: medium

The rules are simple and conservative:

  • One source resolves at low. A bare --intent one-liner is a claim about the task, not proof of it.
  • Two consistent sources resolve at medium. Pass --intent and --prompt together; if they agree, confidence rises.
  • Divergent sources drop a step. Shipmoor never rewards disagreement between sources.

Why confidence matters

Confidence is one of the three independent axes of the verdict (alongside maturity and coverage), and two features key off it:

  • The gate. Blocking requires a non-low-confidence intent — the gate’s built-in floor refuses to block a merge on a one-line guess, no matter what your policy says. See Turning on the gate.
  • BYO-Judge. The advisory LLM opinion only runs at medium or high confidence. See BYO-Judge.

This is also why a real miss can be reported as only a minor gap when the intent came from a single low-confidence source: low confidence caps how far the verdict can escalate. Add a second agreeing source and the same miss is reported at full strength.

Resolving intent without a scan

To see just the resolved intent — no diff, no probes — use resolve-intent with the same sources. It shares the resolver with scan, so the intent resolves identically:

shipmoor resolve-intent --intent "…" --json     # → goal_text, confidence, sources
shipmoor resolve-intent --session run.jsonl

(The legacy intent-scan command is a deprecated alias for scan --intent.)

Privacy

The resolved intent is masked before anything else happens — a secret pasted into a prompt or ticket text never survives into the output, the change signal, or a judge prompt. Session transcripts are masked on ingestion. See Privacy & telemetry.

Next

Last updated on June 11, 2026

Was this article helpful?

Your response is saved on this device.