Problem
Aegis lacks a formal capability handshake for Claude Code integration. Feature behavior is inferred implicitly instead of negotiated explicitly.
Verified Status
TRACKED — needs implementation
Environment
- Aegis version: v2.5.3
- Branch: main
- Install method: npm/global
Root Cause in Code
app.post('/v1/hooks/:eventName', async (req, reply) => {
if (!KNOWN_HOOK_EVENTS.has(eventName)) {
return reply.status(400).send({ error: `Unknown hook event: ${eventName}` })
}
// process event directly
})
Hook processing validates events but does not negotiate a protocol version/capability set with the client before enabling behavior branches.
Impact
- Version drift can cause brittle integrations
- Harder backward compatibility management
- Feature rollout risk when clients differ in supported events/options
Proposed Fix
- Define handshake schema with
protocolVersion and capabilities.
- Add feature gates driven by negotiated capabilities.
- Emit compatibility diagnostics for unknown/out-of-policy clients.
- Keep graceful downgrade path.
Test Plan
- Client with partial capabilities -> feature downgrade works.
- Unknown protocol version -> warning + safe fallback.
- Full-capability client -> all gated features enabled.
Acceptance Criteria
- Handshake is mandatory for advanced integration paths.
- Capability gating prevents unsupported behavior.
- Diagnostics show negotiated capabilities per session.
Analysis Files
- docs/plans/aegis-claude-code-collaboration-analysis.md
- docs/plans/aegis-claude-code-technical-backlog.md
- docs/plans/github-open-issues-coverage-audit.md
Problem
Aegis lacks a formal capability handshake for Claude Code integration. Feature behavior is inferred implicitly instead of negotiated explicitly.
Verified Status
TRACKED — needs implementation
Environment
Root Cause in Code
Hook processing validates events but does not negotiate a protocol version/capability set with the client before enabling behavior branches.
Impact
Proposed Fix
protocolVersionandcapabilities.Test Plan
Acceptance Criteria
Analysis Files