Skip to content

feat(security): wire signed audit-chain + grantCheck actually denies#189

Merged
mdheller merged 1 commit into
mainfrom
feat/security-activation-1
Jun 23, 2026
Merged

feat(security): wire signed audit-chain + grantCheck actually denies#189
mdheller merged 1 commit into
mainfrom
feat/security-activation-1

Conversation

@mdheller

Copy link
Copy Markdown
Member

#15/#31: tamper-evident Ed25519-signed audit chain, always written (verified: chained + signed). #18: grantCheck enforces revocation, mcp callTool gates on it. Backend+frontend 0. 🤖 Generated with Claude Code

…heck actually deny

Two decorative controls made real:
- #15/#31 — emitScopedTelemetry now writes a TAMPER-EVIDENT chain: each event links to the previous
  (prevHash→hash via audit-chain.hashRecord) and the head is Ed25519-signed with the device key
  (chain-head.sig). And it ALWAYS writes (dropped the !scopedConfigured early-return) so governance evidence
  exists by default, not only once a policy is set. Verified: 2nd.prevHash == 1st.hash, head.sig present.
- #18 — grantCheck stopped hardcoding result:{valid:true}. New revocation ledger (revokeGrant/unrevokeGrant,
  persisted) + checkToolGrant() verdict; mcp callTool now GATES on it (a revoked server:tool is blocked before
  dispatch with an isError result), and emitToolGrantCheck records the real verdict.
Backend + frontend 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mdheller
mdheller merged commit 0c87f6d into main Jun 23, 2026
8 checks passed
@mdheller
mdheller deleted the feat/security-activation-1 branch July 19, 2026 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant