Back to Claude Mem

Kiro CLI Feature Parity

docs/public/kiro-cli/parity.mdx

13.10.3-community-edge.04.9 KB
Original Source

Feature Parity: Kiro CLI vs Claude Code

Claude-mem on Kiro CLI keeps the full pipeline — capture, AI compression, storage, search, injection — with a handful of host-imposed differences documented here.

Hook mapping

Claude CodeKiro CLIStatus
SessionStart → context injectionagentSpawn (stdout injected into context)✅ Full — raw text instead of JSON envelope
UserPromptSubmit → session init + semantic injectuserPromptSubmit (stdout injected)✅ Full
PostToolUse → observation capturepostToolUse, matcher *✅ Full — Kiro tool names mapped (fs_writeWrite, fs_readRead, execute_bashBash)
Stop → session summarystop (assistant_response in payload)✅ Full — better: no transcript parsing needed
Setup → version check❌ No Kiro equivalent — install and repair commands perform runtime setup explicitly
PreToolUse: Read → per-file context❌ Blocked — Kiro does not inject preToolUse stdout
SessionEnd / PreCompact / SubagentStop❌ No Kiro equivalent

Full parity (no user-visible difference)

Observation capture and compression, session summaries, session-start memory injection, per-prompt semantic injection, MCP search tools (search, timeline, get_observations, corpus tools, smart_* tree-sitter tools), the web viewer + SSE live feed, Chroma semantic search, modes, project exclusion, privacy tags, Telegram notifications, and all worker-side features — these are host-independent and work unchanged.

Compression provider: Kiro installs default to the Kiro provider — compression runs on your own Kiro subscription via headless kiro-cli chat --no-interactive through a dedicated hook-less, tool-less claude-mem-observer agent (the hook-less agent is the recursion guard: it prevents claude-mem from observing its own compression chats). No API key and no co-installed Claude Code needed. claude, gemini, and openrouter remain available via CLAUDE_MEM_PROVIDER.

Skills: Kiro implements the same Agent Skills standard (SKILL.md), so all skills install verbatim and appear as slash commands. Skills that orchestrate Claude Code subagents (do, make-plan, babysit, standup) load fine but their subagent steps depend on Kiro's delegate/subagent capabilities; version-bump is Claude-Code-plugin-specific.

Degraded, with compensation

FeatureGapCompensation
Per-file context on ReadpreToolUse stdout is not injected; exit 2 would block the tool, which claude-mem never doesPer-prompt semantic injection is enabled by default on Kiro installs — relevant observations (including file-scoped ones) arrive with each prompt
Post-/compact re-injectionNo compaction lifecycle eventSame: the next userPromptSubmit re-injects semantically relevant context
Subagent attributionKiro hook payloads carry no agent_id/agent_typeObservations from delegated sessions are recorded unattributed; revisit when Kiro ships its official subagents tool
Terminal hints (systemMessage)Hooks have no user-visible output channelViewer URL is printed at install time and by npx claude-mem status
Transcript watcherKiro provides no transcript_pathNot needed — stop delivers assistant_response directly
Auto-updateNo plugin/marketplace system in Kiro CLI (kirodotdev/Kiro#8578)npx claude-mem update, then re-run the Kiro install (idempotent)

Safety invariants (why the port is shaped this way)

  • Raw stdout, not JSON: Kiro injects hook stdout verbatim. The Kiro adapter emits plain text for context and nothing at all otherwise — a JSON envelope would pollute your agent's context.
  • Silent stop hook: Kiro parses stop stdout for a {"decision": "block"} override that forces the conversation to continue. Claude-mem's stop hook is unit-tested to emit zero bytes.
  • Never exit 2: on Kiro, a preToolUse hook exiting 2 blocks your tool call. Claude-mem hooks soft-fail with exit 0 when the worker is unreachable.
  • Explicit timeout_ms: Kiro's 30s default is too short for a cold worker start; the installed hooks carry 60–120s timeouts (300s for the silent self-heal hook that restores plugin dependencies), with a dedicated warm-up hook first.

Verified against

kiro.dev CLI docs plus a live payload capture on kiro-cli 2.11.0 (July 2026) — see tests/fixtures/kiro/README.md for the captured contract, including two deviations from the docs the port handles: the session UUID arrives as the KIRO_SESSION_ID environment variable (no session_id payload field), and fs_read batches reads in an operations array. If behaviour changes after a Kiro upgrade, re-run the probe in tests/fixtures/kiro/probe/ and file an issue with the captured payloads.