← Release notes

v0.2.1129 Jul 2026

Role definitions install at the handshake

Written during a tool call, they could not be dispatched until the next session — so agents simulated the split without the allowlist that enforces it.

Claude Code reads ~/.claude/agents/ once, at session start. Definitions written during a tool call therefore did nothing that session, and the agent offered to simulate the two roles with general-purpose subagents — which drops the tools: allowlist, the only thing making the split enforceable rather than advisory.

They now install on the initialize handshake, during the session start the user was already performing. The hook is oninitialized, not a step after connect(): connect resolves before the client has sent initialize, so the client identity is still unknown there.

Commits for this release: v0.2.10…v0.2.11