Add TEE-side child path access policies#197
Add TEE-side child path access policies#197crossagent-production-app[bot] wants to merge 1 commit into
Conversation
|
Review verdict: hold — right idea, but wrong layer + wrong name, and it needs reconciling with the on-chain scope authority. Issue #7 asks for "TEE-side" access control. This PR implements it as a broker SQLite It also overlaps the on-chain scope model, which arch.md §16 calls the single source of truth. Agents already get no scope until the master approves on-chain (§10.2 step 13 + §6.3), so default-deny is already the posture. This adds a second, broker-local default-deny gate at JWT-mint time. The genuinely new capability — suspend/resume (pause JWT issuance without an on-chain tx) — is a useful fast kill-switch, but it introduces broker-local authority that §13/§16 don't currently account for (the PR flags this: "not on-chain extrinsics yet"). The Recommended action: hold/draft until we resolve — (a) rename off "TEE" (it's broker-side) or move enforcement to the signer/chain; (b) decide whether this is a broker-side cache of on-chain scope or an independent authority, and document the answer in arch.md §13 + §16; (c) keep the suspend/resume kill-switch but give it an arch home. (Noted on #7.) |
|
📋 Structured decision note added — |

Links #7
Adds a security-group-like child derivation path policy layer for agent HDKD paths. Pair approval explicitly activates the path policy, unknown paths are denied by default, and suspend/resume endpoints can toggle JWT issuance without pretending the mathematically-derived child key relationship can be destroyed. The parent-control UI now surfaces the TEE child path policy state on the agent permission detail page.
Change:
Objective Evidence:
cargo check -p agentkeys-broker-server: passed.cargo test -p agentkeys-broker-server storage::grants::tests::child_path_policy -- --nocapture: passed.cargo test -p agentkeys-broker-server --test agent_bootstrap_flow -- --nocapture: passed.npm --prefix apps/parent-control run typecheck: passed.env -u NODE_ENV npm --prefix apps/parent-control run build -- --no-lint: passed../provisioner-scripts/node_modules/.bin/playwright screenshot http://127.0.0.1:3113 /tmp/agentkeys-issue7-playwright-screenshot-clean.png: passed and captured the local product UI.Visual Evidence:
Reviewer:
Risks / Not Covered: