v0.34.0: align with Claude Code May 2026 update#29
Merged
Conversation
Claude Code shipped a sizeable update: hooks now support direct
posix_spawn via `args: string[]`, MCP stdio servers receive
`CLAUDE_PROJECT_DIR`, PostToolUse:Task carries
`x-claude-code-parent-agent-id`, and `claude plugin details` shows
per-plugin metadata. v0.34.0 lines us up with all of it.
A — `args: string[]` for hook commands (P0)
- hooks/hooks.json: every hook entry now ships both `command` (legacy
Claude Code) and `args` (new Claude Code). Direct spawn skips the
`/bin/sh -c` shim, eliminates a class of EAGAIN burst-spawn
failures observed on WSL, and removes a layer of shell quoting.
- src/hooks/installer.ts: new `hookEntry(action, options)` helper
that emits both fields uniformly; `buildHookArgs()` mirrors
`buildHookCommand()`. The npm-installer path (writes user
settings.json) now also emits `args`.
- tests/hooks/installer.test.ts: new regression guard iterates
every PreToolUse / PostToolUse / SessionStart entry and asserts
both `command` and `args` are present and well-formed.
B — `parent_agent_id` capture (P1)
- src/core/event-log.ts: optional `parent_agent_id` field on
HookEvent so dispatch chains can be reconstructed (main →
general-purpose → tp-* delegate, etc.).
- src/hooks/post-task.ts: PostTaskHookInput accepts
`parent_agent_id`; processPostTask forwards it to the appendEvent
record when Claude Code populates it. Older versions omit the
field; new shape stays back-compatible.
C — startup diagnostic for CLAUDE_PROJECT_DIR (P2)
- src/index.ts: startServer emits one `mcp_startup` diagnostic per
process with the source of the resolved projectRoot
(CLAUDE_PROJECT_DIR / INIT_CWD / git-detect / explicit arg) plus
a flag indicating whether CLAUDE_PROJECT_DIR was present at all.
Fire-and-forget — no extra await before createServer (avoiding a
flaky-test regression in tests/index-stdin.test.ts).
F — plugin.json description polish
- 22 → 25 subagents (correct count).
- Sharper one-liner that lists what `claude plugin details
token-pilot` users see: AST-aware reads, find_usages, structural
git diff/log, edit-safety guard, Task-routing matcher, telemetry,
and the tp-* tiered roster.
Version bump 0.33.1 → 0.34.0 across the three manifests; agents
rebuilt under 0.34.0.
Tests: 1293/1293 (+1 from new args regression).
Build: clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Claude Code shipped a sizeable update — hooks gain
args: string[](direct posix_spawn, no shell), MCP stdio servers receiveCLAUDE_PROJECT_DIR, PostToolUse:Task shipsparent_agent_id,claude plugin details <name>shows per-plugin metadata. v0.34.0 lines us up with all of it. 1293/1293 tests pass.Changes
A —
args: string[]for hook commands (P0)hooks/hooks.json— every entry now ships bothcommand(legacy CC) andargs(new CC). Direct spawn eliminates the/bin/sh -cshim — sidesteps the class of EAGAIN burst-spawn failures observed on WSL.src/hooks/installer.ts— newhookEntry()+buildHookArgs()helpers. npm-installer path (writes user settings.json) also emitsargs.tests/hooks/installer.test.ts— regression guard asserts both fields present and well-formed across every section.B —
parent_agent_idcapture (P1)src/core/event-log.ts— optionalparent_agent_idonHookEventso dispatch chains can be reconstructed (main → general-purpose → tp-* delegate).src/hooks/post-task.ts— forwardsparent_agent_idwhen Claude Code provides it; older versions omit the field.C — Startup diagnostic for CLAUDE_PROJECT_DIR (P2)
src/index.ts—startServeremits onemcp_startupdiagnostic per process withproject_root_source(CLAUDE_PROJECT_DIR / INIT_CWD / git-detect / args) andclaude_project_dir_present. Fire-and-forget.F — plugin.json polish
claude plugin details token-pilot.Migration
Existing users:
claude plugin marketplace update token-pilot && claude plugin update token-pilot@token-pilot— Claude Code picks upargsautomatically.npm install -g token-pilot@latest— global CLI updates.token-pilot migrate-hooks— cleans any stale pinned paths from earlier installs (still relevant from v0.33.0).No breaking changes —
commandfield kept side-by-side so older Claude Code versions stay functional.Test plan
npm run buildclean (25 agents composed under 0.34.0)npx vitest run→ 1293/1293 passnpx tsc --noEmitclean (pre-existing unreachable-after-exit warnings unchanged)🤖 Generated with Claude Code