From 4e56cb12a9832eb21b3ce08282b3c68810100c30 Mon Sep 17 00:00:00 2001 From: Ashwin Bhat Date: Thu, 4 Dec 2025 09:26:01 -0800 Subject: [PATCH] feat: add SDK beta support with SdkBeta type and betas option (#390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port the SdkBeta type and betas option from the TypeScript SDK to enable SDK users to pass beta feature flags (e.g., 1M context window) to the CLI. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude --- src/claude_agent_sdk/__init__.py | 3 +++ src/claude_agent_sdk/_internal/transport/subprocess_cli.py | 3 +++ src/claude_agent_sdk/types.py | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/src/claude_agent_sdk/__init__.py b/src/claude_agent_sdk/__init__.py index 407bc9a..4898bc0 100644 --- a/src/claude_agent_sdk/__init__.py +++ b/src/claude_agent_sdk/__init__.py @@ -42,6 +42,7 @@ from .types import ( SandboxIgnoreViolations, SandboxNetworkConfig, SandboxSettings, + SdkBeta, SdkPluginConfig, SettingSource, StopHookInput, @@ -345,6 +346,8 @@ __all__ = [ "SettingSource", # Plugin support "SdkPluginConfig", + # Beta support + "SdkBeta", # Sandbox support "SandboxSettings", "SandboxNetworkConfig", diff --git a/src/claude_agent_sdk/_internal/transport/subprocess_cli.py b/src/claude_agent_sdk/_internal/transport/subprocess_cli.py index 73c1b29..6542cde 100644 --- a/src/claude_agent_sdk/_internal/transport/subprocess_cli.py +++ b/src/claude_agent_sdk/_internal/transport/subprocess_cli.py @@ -203,6 +203,9 @@ class SubprocessCLITransport(Transport): if self._options.fallback_model: cmd.extend(["--fallback-model", self._options.fallback_model]) + if self._options.betas: + cmd.extend(["--betas", ",".join(self._options.betas)]) + if self._options.permission_prompt_tool_name: cmd.extend( ["--permission-prompt-tool", self._options.permission_prompt_tool_name] diff --git a/src/claude_agent_sdk/types.py b/src/claude_agent_sdk/types.py index f37fd3c..9a9800e 100644 --- a/src/claude_agent_sdk/types.py +++ b/src/claude_agent_sdk/types.py @@ -14,6 +14,9 @@ if TYPE_CHECKING: # Permission modes PermissionMode = Literal["default", "acceptEdits", "plan", "bypassPermissions"] +# SDK Beta features - see https://docs.anthropic.com/en/api/beta-headers +SdkBeta = Literal["context-1m-2025-08-07"] + # Agent definitions SettingSource = Literal["user", "project", "local"] @@ -614,6 +617,8 @@ class ClaudeAgentOptions: disallowed_tools: list[str] = field(default_factory=list) model: str | None = None fallback_model: str | None = None + # Beta features - see https://docs.anthropic.com/en/api/beta-headers + betas: list[SdkBeta] = field(default_factory=list) permission_prompt_tool_name: str | None = None cwd: str | Path | None = None cli_path: str | Path | None = None