You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ClaudeCode.Hook.DebugLogger module — A diagnostic hook that logs every invocation with event name, tool name, and available input keys. Register it for any hook event to observe what the CLI sends. Includes ClaudeCode.Hook.DebugLogger.Permissive variant for :can_use_tool that returns :allow. ([9d75ed8])
Restored :can_use_tool option — Single permission callback invoked before every tool execution. Simpler alternative to PreToolUse hooks when you don't need matchers. Accepts a module implementing ClaudeCode.Hook or a 2-arity function. Mutually exclusive with :permission_prompt_tool. See the Hooks guide.
ClaudeCode.Hook.Output module family — Structured hook output types replacing the flat ClaudeCode.Hook.Response module. Each hook event has a dedicated output struct (ClaudeCode.Hook.Output.PreToolUse, ClaudeCode.Hook.Output.PostToolUse, etc.) with to_wire/1 for CLI serialization. Includes ClaudeCode.Hook.Output.coerce/2 for mapping shorthand returns (:ok, {:allow, opts}, {:deny, opts}, etc.) to the correct wire format.
ClaudeCode.Hook.PermissionDecision.Allow / ClaudeCode.Hook.PermissionDecision.Deny — Permission decision structs shared by :can_use_tool and PermissionRequest hooks.
mix claude_code.setup_token task — New mix task that runs claude setup-token to configure an OAuth token via an interactive browser flow. Allocates a PTY to support the CLI's terminal UI on both macOS and Linux. ([aff71ca])
ClaudeCode.Plugin.CLI module — Shared CLI execution helper for plugin and marketplace commands.
Changed
Breaking: hermes_mcp is now a required dependency (was optional). It was already required at compile time for ClaudeCode.MCP.Server. If your project does not use MCP features, you will now pull in hermes_mcp as a transitive dependency — no code changes are needed.
Breaking: Removed ClaudeCode.MCP.available?/0 and ClaudeCode.MCP.require_hermes!/0 — no longer needed with hermes_mcp required.
MCP parameter validation — ClaudeCode.MCP.Router now validates tool parameters against their schema using Hermes/Peri before execution, returning JSONRPC -32602 errors for invalid input. Previously, invalid parameters were passed directly to execute/2.
MCP PreToolUse hooks — PreToolUse hooks now apply to in-process MCP tool calls, matching the mcp__<server>__<tool> naming convention. Previously, MCP tools bypassed the hook system entirely.
ClaudeCode.Adapter.Port buffer overflow false positive — The buffer overflow check now runs after extracting complete lines, not before. Previously, a burst of many small complete JSON messages arriving in a single chunk could trigger a false overflow even though only the remaining incomplete buffer should count against the limit.
ClaudeCode.MCP.Router generic notification handling — Handle all JSONRPC 2.0 notification types (notifications/*) instead of only notifications/initialized. Previously, other notification types like notifications/cancelled would crash with a FunctionClauseError because jsonrpc_error/3 requires an "id" field that notifications don't have.
ClaudeCode.Test.stub/2 shared ownership — stub/2 now works correctly when the session name has a shared owner, updating the stub instead of raising. ([95524e0])