Skip to content

docs(setup): touch the hardware key for signatures, not for ssh transport - #1367

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:docs/aut-slot-no-touch
Sep 24, 2026
Merged

potiuk merged 1 commit into
apache:mainfrom
potiuk:docs/aut-slot-no-touch

Conversation

@potiuk

@potiuk potiuk commented Sep 24, 2026

Copy link
Copy Markdown
Member

Summary

  • The secure setup recommended a cached touch policy on both the signing (sig) and the ssh authentication (aut) slot of a hardware key, so every git fetch, git pull and git push waited for a touch. Fetch and pull are reads; a push is already confirmed by the git push ask rule and can only carry commits that were signed with a touch. The transport touch was a prompt that bought no control — the prompt-fatigue case the proposed principle in principles: add "Avoiding prompt fatigue" as §1, ahead of the security principle (PMC vote required) #1291 describes.
  • New recommendation: sig cached, aut off. The touch stays on every signature and leaves the transport.
  • Exception: with gpg.format=ssh the signature is made by the aut key, and the card cannot tell a signature from a login, so aut must stay cached there. The docs say so and name the two ways out (OpenPGP signing, or an https remote).

Type of change

  • Skill change (.claude/skills/<name>/) — eval fixtures updated below
  • Tool / bridge contract (tools/<system>/*.md)
  • Python package (tools/*/ with pyproject.toml)
  • Groovy reference impl
  • Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
  • Documentation (docs/, README.md, CONTRIBUTING.md)
  • Project template (projects/_template/)
  • CI / dev loop (prek, workflows, validators)
  • Other:

What changed:

  • docs/setup/secure-agent-setup.md — rationale, ykman commands, OpenPGP as the recommended signing form, the gpg.format=ssh caveat, the install / verify walk-throughs and the overlay test.
  • docs/rfcs/RFC-AI-0002.md Layer 3b — the touch covers signatures, not the transport (heading kept, so existing anchors still resolve).
  • docs/setup/sandbox-troubleshooting.md — the transport-touch hang applies only when aut carries a policy.
  • setup-isolated-setup-install step K.1 — proposes the touch on whichever slot signs (from gpg.format), and aut off for OpenPGP signers whose aut carries a policy.
  • setup-isolated-setup-verify check 10 — same rule.

Test plan

  • prek run on every changed file passes (including check-doc-sync and lychee)
  • For Python packages touched: n/a
  • For Groovy bridges touched: n/a
  • For skill changes: eval suite for step-hardware-key graded by agent self-eval against the new K.1 text — all four cases match; a cross-model --cli run is still to do
  • For skill behaviour changes: new fixture case-4-openpgp-aut-cached (OpenPGP signer with aut cached → aut off proposed); new slots_to_clear output field; case-2 renamed to case-2-ssh-signing-aut-cached with its expectation corrected (ssh signing, aut already cached → no change); case-3 now expects sig only
  • Other:

RFC-AI-0004 compliance

  • HITL — ykman commands are still handed to the operator; the skill never runs them
  • Sandbox — no new host access; the sandbox grants are unchanged
  • Vendor neutrality
  • Conversational + correctable
  • Write-access discipline
  • Privacy LLM

Linked issues

Refs #1291

Notes for reviewers (optional)


Generated-by: Claude Opus 5

🤖 Generated with Claude Code

…port

The secure setup recommended a cached touch policy on both the signing
and the authentication slot, so every git fetch, pull and push waited
for a touch. Fetch and pull are reads, and a push is already confirmed
by the git push ask rule and carries only commits signed with a touch,
so the transport touch was a prompt that bought no control.

Recommend `sig cached` plus `aut off` instead, keep `aut cached` only
for gpg.format=ssh (where the aut slot is the one that signs), and
update the install and verify skills and the hardware-key evals to
match.

Generated-by: Claude Opus 5
@potiuk
potiuk merged commit 1335deb into apache:main Sep 24, 2026
9 checks passed
potiuk added a commit that referenced this pull request Sep 24, 2026
Reconciles the spec-loop specs with the functionality that shipped
between 5c75abd and bcd8b7f:

- agent-isolation-sandbox: the hardware-key touch policy (sig cached +
  aut off with OpenPGP signing, aut cached with gpg.format=ssh) (#1367);
  touch-watcher owner is the harness (#1365); macOS overlay closes on
  deactivation (#1325); whole-user git hooks allowRead and dispatcher
  flavour (#1364, #1322, #1358); agent-guard finds the git subcommand
  past global flags (#1330); agent-guard plugin counts as a complete
  install (#1323); per-tool cooldown_days, bubblewrap 0.13.0 (#1360).
- sandbox-diagnostics: ten catalogue entries (prek/uv not found, git
  hooks silently skipped) (#1359, #1364); doctor probes as scripts, with
  probes 7 and 8 (#1336, #1362, #1364); verify's 12 checks and
  conditional-checks.md (#1334).
- vetted-command-surface: HTTP read backend with the OSV and CVE.org
  operations (#1326); the vetted-op-read recipe spelling (#1339); the
  plugin copy resolves standalone (#1357).
- cve-tooling: tools/osv (contract:security-cross-ref) and the cve-org
  check through vetted-ops (#1297, #1326).
- security-issue-lifecycle: step 2b proposes going ahead on a quiet
  reporter (#1340); the post-advisory security-pages update (#1355).
- meta-and-quality-tooling: name: must match the skill directory
  (#1361); skill-evals fixture containment and grader retry (#1315,
  #1341); optimize-skill budgets, eval gate, rewrite and extract-code
  passes (#1331, #1332, #1335, #1338); diff-scoped prek CI (#1317).
- marketplace-distribution: substrate plugins (#1368, #1357).
- adversarial-review (new): the tool and substrate plugin as shipped
  (#1368), with its known gaps.

Generated-by: Claude Opus 5
@potiuk potiuk added the substrate:framework-dev Tool substrate: build / validate / eval the framework itself label Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

substrate:framework-dev Tool substrate: build / validate / eval the framework itself

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant