Field notes from one machine. An agentic CLI sits next to real credentials. The failure modes do not stay put, so this is public.
An agentic CLI runs a shell, reads config, and calls MCP servers that hold live tokens. It also fans out work that spends money. Broad tool access plus standing credentials is a live security surface.
This repo is the operating layer from daily use of Claude Code on one
machine. It holds a security posture and the PreToolUse guards that
enforce part of it. It also holds five incident postmortems, five
reusable skills, and the working agreements those pieces assume.
Four leak events landed in one week through different tool shapes. The
record is in incidents/.
operating-model.md: DCB, session pre-flight, and the parallel-session protocol.security/: layered posture and the published credential hook.posture.md: allowlists, escape hatches, and human-run credential work.credential-guard.py:PreToolUseblock on bulk env dumps and known-sensitive reads.README.md: wiring, coverage, and the override convention.
hooks/: redline guards. Detail:hooks/README.md.incidents/: five postmortems. Bar: real exposure, real spend, or a live control that failed.debug-notes/: write-ups that did not clear the incident bar.conventions/: rules that outlived their essays.parallel-sessions.md: one concern, one branch, one PRbranch-hygiene.md: merge deletes the remote ref. Sweep the local branch.links-verify.md: verify a link before you send itallowlists-fail-both-ways.md: a stale exception is a failtruncation-defers.md: dual limits. Always keep a path to the rest.truncated-producers-taint.md: output from a limited run is suspectagent-facing-contracts.md: agree or disagree before the diffagent-trigger-authorization.md: four independent checks. An unrun check is not a pass.jsonl-splits-on-lf-only.md: never frame JSONL with Nodereadlinesettled-rulings-suppress-findings.md: a decided question is not a findingfeedback-hooks-are-not-guards.md: redline gates and fail-open feedback stay apartagent-in-ci.md: scoped credentials, proposal-only output, then a verifierloop-safety.md: a loop re-earns merge rights.ADR-016hooks-gate-their-own-repair.md: this clone hosts live hooksagent-success-signals.md: ask what a green signal measures
reference/: worked designs for problems this fleet does not have yet. Not rules.vendors/: per-vendor adapters. Root stays vendor-neutral. Contract:vendors/README.md.claude/: control plane. Skills:dcb,descope-sweep,park,proglog,handoff.codex/: second-opinion wiring and the escalation packet.cursor/: IDE lane.ADR-009.gemini/: Antigravity (AGY). Measured research and overflow lane.pi/: overflow harness. Target model family: Kimi. Parked until Kimi (interim xAI declined 2026-08-16).ADR-014.grok/: Grok Build. Guard wiring only. Not a routing lane.ADR-012.packet/: cross-vendor transfer packet. Schema, compiler, refusals. Not a vendor.
decisions/: the repo contract, versioned.ADR-001-public-claude-ops-repo.md: scope contractADR-002-public-first-canonicality.md: this repo is the system of recordADR-003-delegation-maturity.md: path to full delegationADR-004-ref-explicit-git-in-shared-clones.md: automation targets the ref, or it refusesADR-005-herdr-persistence-not-agent-awareness.md: Herdr for persistence, not awarenessADR-006-claim-the-concern-before-working-it.md: claim the concern before the workADR-007-guard-the-invariant-not-the-verb.md: refuse a rewrite that drops a remotemaincommitADR-008-agent-ops-rename-and-vendor-layer.md: rename and thevendors/contractADR-009-cursor-ide-lane-in-fleet.md: Cursor as the IDE laneADR-010-claude-led-four-vendor-orchestration.md: one control plane, specialist lanesADR-012-capability-parity-and-the-guard-obligation.md: every vendor reads and writes. Guard wiring is the bound.ADR-013-guard-canonicality-line.md: which hooks are canonical hereADR-014-pi-harness-kimi-model-target.md: Pi harness. Kimi is the model target.ADR-015-blast-reversibility-scoring-and-redaction.md: blast × reversibility scoring and redact-and-allowADR-016-loops-do-not-inherit-merge-authorization.md: a loop re-earns merge rights
scripts/redline-guard.py: pre-commit scan for credential shapes, private repo names, private memory links, and local paths. Banned terms ship as SHA-256 hashes.
security/posture.md: the layered model this repo assumes.incidents/2026-07-04-github-pat-read-grep-leak.md: a hook on the shell still leaked throughReadandGrep.security/credential-guard.py: the fix in the form that runs.
This is one engineer's machine, not a team or a platform. There is no shared incident channel and no on-call rotation. Each postmortem is a solo session that caught its own mistake in the same turn. "Fleet" in this repo means the agent seats on that one machine: Claude, Codex, Cursor, Antigravity, Pi, and Grok. It does not mean people.
It is public because the failure modes do not need a team. They need an agent with shell access, and a person who trusts it a little too soon.