github anthropics/claude-agent-sdk-python v0.1.74

5 hours ago

New Features

  • Hook event streaming: Added include_hook_events option to ClaudeAgentOptions. When set, hook events (PreToolUse, PostToolUse, Stop, etc.) are emitted by the CLI and yielded from the message stream as HookEventMessage, matching the TypeScript SDK's includeHookEvents (#917)
  • Defer hook decision: Added support for the "defer" hook decision in PreToolUseHookSpecificOutput.permissionDecision and new DeferredToolUse dataclass on ResultMessage.deferred_tool_use, bringing parity with the TypeScript SDK's deferred tool use round trip (#865)
  • Strict MCP config: Added strict_mcp_config option to ClaudeAgentOptions. When True, the CLI only uses MCP servers passed via mcp_servers, ignoring project, user, and global MCP configurations for fully deterministic server sets (#915)
  • Permission context enrichment: Added decision_reason, blocked_path, title, display_name, and description fields to ToolPermissionContext, enabling richer permission prompts in can_use_tool callbacks (#909)
  • updatedToolOutput for post-tool hooks: Added updatedToolOutput to PostToolUseHookSpecificOutput for replacing any tool's output before it reaches the model, not just MCP tools (#911)
  • xhigh effort level: Added "xhigh" to the effort Literal on ClaudeAgentOptions and AgentDefinition, an Opus 4.7-specific level that falls back to high on other models (#914)
  • Subprocess cleanup on parent exit: Registered an atexit handler to terminate live CLI subprocesses when the parent process exits, preventing orphaned claude processes from leaking (#916)

Bug Fixes

  • ResourceWarning on disconnect: Fixed ResourceWarning: Unclosed <MemoryObjectReceiveStream> emitted on ClaudeSDKClient disconnect and query() cleanup by closing the receive stream at the consumer boundary (#908)
  • Session created_at timestamp: Fixed list_sessions() returning created_at=None for sessions whose first JSONL record lacks a timestamp field by scanning the full head buffer instead of only the first line (#907)

Documentation

  • Clarified that can_use_tool fires only on "ask" permission decisions, not on "allow" or "deny" (#912)

Internal/Other Changes

  • Updated bundled Claude CLI to version 2.1.129

PyPI: https://pypi.org/project/claude-agent-sdk/0.1.74/

pip install claude-agent-sdk==0.1.74

Don't miss a new claude-agent-sdk-python release

NewReleases is sending notifications on new releases.