Files
Dragan Spiridonov c0cfc16d27 feat(mcp): default-deny MCP policy gate — plan 05 / A1 (G1)
Closes G1 of the cross-pollination plan: AQE now governs its own ~90-tool
MCP surface with a default-deny policy + CI gate ("npm audit for agent tools").

- .harness/mcp-policy.json: truthful default-deny snapshot; _enforcement labels
  what is wired (tool-scoping default-deny, witness-chain audit) vs posture/
  stated-intent — not theater.
- scripts/mcp-policy-gate.mjs: self-contained mirror of MetaHarness mcp-scan's
  HIGH checks; also reads .mcp.json (closing the scan false-negative where AQE's
  server is declared there, not in .claude/settings.json). Exit 1 on any HIGH.
- .github/workflows/mcp-policy-gate.yml + `npm run security:mcp-policy`.
- tool-scoping: fix the interface doc-comment that claimed "empty/undefined ->
  allowAll" (the code DENIES by default); export ALL_AGENT_ROLES.
- tests/unit/mcp/mcp-policy-gate.test.ts: drift guard (policy roles <-> enforcement),
  default-deny posture. 46/46 green; scan = 0 HIGH; fails-closed verified.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:42:27 +00:00
..
2026-06-08 16:53:27 +00:00
2026-06-08 16:53:27 +00:00
2026-04-30 14:39:10 +00:00
2026-04-30 14:39:10 +00:00