AI Coder Mode is a terminal output format designed for developers whose primary workflow is Claude Code / Cursor / Aider / Zed — i.e. anyone whose "terminal" is an AI agent's tool-call output, not a literal terminal. Pass --ai to any pqcheck subcommand and the output transforms into a three-layer artifact: a banner, a body, and a structured CIPHERWAKE_AI_GUARD_RESULT block that your AI coworker parses to decide pass / review / block.
AI Coder Mode doesn't change what we measure — it changes how the existing measurements surface to AI coders. The underlying scan (DBR scoring, Trust Diff, Preview Trust Diff, deploy check) is unchanged. The output is reshaped into:
◆ cipherwake · KIND · STATUS · domain · DBR X.X · severity · ship_decision=.... Color-coded green / yellow / red.CIPHERWAKE_AI_GUARD_RESULT … END_CIPHERWAKE_AI_GUARD_RESULT block with stable key=value lines. AI agents grep between the markers and parse deterministically.
The three layers are generated client-side in cli/bin/pqcheck.js. The underlying API responses are unchanged — only the CLI rendering changes. Specifically:
ship_decision, to color and label the line.status, domain, kind, dbr, grade, max_severity, ship_decision, top_issue, scanned_at, advisory_only=true, plus kind-specific fields (e.g. delta_count, baseline, score_delta for diff modes).
AI Coder Mode also writes ~/.config/cipherwake/last-scan.json on every invocation. This file feeds the optional cipherwake-statusline script (v0.16.0) for persistent ambient state in your AI coder's status line.
The ship_decision field is the single primitive your AI coworker routes on. It's not a severity rating; it's an action recommendation:
pass — no high-or-critical findings, no unexpected diff. Safe to announce the deploy. Exit code 0.review — high-severity finding present, OR unexpected diff vs baseline, OR DBR score drop ≥ 1.0. Ask the human before announcing. Exit code 1.block — critical-severity finding present (e.g. confirmed subdomain takeover). Revert or hold the deploy. Exit code 2.
Exit codes are ship_decision-aware only when --ai is set. Classic exit codes (threshold breach = 2) are preserved for non-AI mode so existing CI pipelines don't break.
The most important section of any Cipherwake methodology page. Things AI Coder Mode is NOT:
ship_decision=block is a recommendation. You can always ignore it and ship. If you do, Cipherwake recorded the decision in ~/.config/cipherwake/last-scan.json but did not prevent the deploy. Customers are responsible for their own deploy decisions.advisory_only=true field is in every footer block precisely because the same finding can be legitimately accepted (you knew about it, you shipped it on purpose) or rejected (it's a regression). Cipherwake can't tell which; only you can.--ai output. The right surface for Copilot users is the existing GitHub Action sticky PR comment, which is already wired into the human-PR-review workflow Copilot users live in. AI Coder Mode is specifically for AI coders that run CLI tools, not autocomplete CLI commands.pass verdict says nothing about it.--format json output has the complete list if you need it.key=value lines between markers are deterministically parseable AND human-readable. If you need JSON, run --format json (without --ai) to get the full API response.\x1b[33m◆ cipherwake…, configure your agent to render ANSI or use --no-color (TODO — implement in v0.15.1 if customers ask).~/.config/cipherwake/last-scan.json, which v0.15.0 writes on every scan. Roadmap of surfaces that read it:
cipherwake-statusline. CLI bin for Claude Code's statusLine setting. Renders a one-line color-coded summary in ~30ms. Dependency-free; runs on every Claude Code turn.StatusBarItem to show the same one-line summary in the bottom status bar. Different install path from Claude Code (Marketplace, not a settings.json line) because VS Code doesn't have a config-level shell-command hook — but the surface exists and the install is one-click once we publish.--ai output already covers it). Zed's extension API is maturing; we'll target it once stable. A future MCP server lets Claude Code / Cursor call pqcheck as a native tool without npx overhead.~/.config/cipherwake/last-scan.json in our own config directory. For anything that would touch another tool's config (e.g. ~/.claude/settings.json, Cursor's settings.json, etc.), the installer follows this pattern:
statusLine block to ~/.claude/settings.json (existing settings preserved). Choose: [a]uto = do it + show diff · [m]anual = print each change to copy-paste · [n]o = skip."~/.config/cipherwake/last-scan.json (our own state). You can re-run the installer later.--yes flag bypasses the upfront question. Even CI environments get the question on first run; subsequent runs respect the choice stored in ~/.config/cipherwake/install-prefs.json.npx pqcheck cipherwake.io --ai
npx pqcheck trust-diff cipherwake.io --baseline last-week --ai
npx pqcheck preview-diff \
--preview https://your-preview.vercel.app \
--production https://cipherwake.io --ai
npx pqcheck deploy-check cipherwake.io --ai
Pass --ai or --agent — they're synonymous. The footer block can be parsed by your AI coworker with a single grep:
npx pqcheck cipherwake.io --ai \
| awk '/^CIPHERWAKE_AI_GUARD_RESULT$/,/^END_CIPHERWAKE_AI_GUARD_RESULT$/' \
| grep '^ship_decision='