Host and sidekick differences in one matrix — activation, runtime routing, session state, and hooks.
| Concern | Claude Code host | Codex host | Cursor host | Kay sidekick | Codex sidekick |
|---|---|---|---|---|---|
| Skill source | Rendered from skills/ into agents/claude/ | Rendered into agents/codex/ | Rendered into agents/cursor/ | skills/kay-delegate/SKILL.md | skills/codex-delegate/SKILL.md |
| Activation | /sidekick:kay or /sidekick:codex | Same | Same | Starts Kay mode | Starts Codex mode |
| Stop command | /sidekick:kay-stop or /sidekick:codex-stop | Same | Same | Clears Kay mode | Clears Codex mode |
| Child runtime | Host launches selected sidekick | Same | Same | kay exec | codex exec |
| Model and provider | Host does not own sidekick model selection | Same | Same | OpenCode Go; xiaomi, ocg, SIDEKICK_KAY_PROVIDER | Local Codex CLI, gpt-5.4-mini, extra-high reasoning |
| Session state | CLAUDE_SESSION_ID | CODEX_THREAD_ID | SIDEKICK_SESSION_ID | .kay/sessions/<session> | .codex/sessions/<session> |
| Hooks | hooks/hooks.json | Same | hooks/cursor-hooks.json | Through host hooks | Through host hooks |
| Verification | Host-owned | Host-owned | Host-owned | Reviewed by host | Reviewed by host |
Kay is the primary runtime identity. Public docs and new workflows should use Kay names:
The Codex sidekick is the local OpenAI Codex CLI, not a Kay alias:
Refresh generated host bundles from canonical skills: