From 3ad973da49799eb601901106fe2899b49084b0ef Mon Sep 17 00:00:00 2001 From: harupy <17039389+harupy@users.noreply.github.com> Date: Tue, 6 Jan 2026 20:20:48 +0900 Subject: [PATCH] fix: improve set_permission_mode type hints to use PermissionMode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update `SDKControlSetPermissionModeRequest.mode` from `str` to `PermissionMode` - Update `Query.set_permission_mode()` parameter type to `PermissionMode` - Update `ClaudeSDKClient.set_permission_mode()` parameter type to `PermissionMode` - Add missing 'plan' mode to docstring 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> --- src/claude_agent_sdk/_internal/query.py | 3 ++- src/claude_agent_sdk/client.py | 12 ++++++++++-- src/claude_agent_sdk/types.py | 3 +-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/claude_agent_sdk/_internal/query.py b/src/claude_agent_sdk/_internal/query.py index c30fc159..e6a1cb5f 100644 --- a/src/claude_agent_sdk/_internal/query.py +++ b/src/claude_agent_sdk/_internal/query.py @@ -15,6 +15,7 @@ ) from ..types import ( + PermissionMode, PermissionResultAllow, PermissionResultDeny, SDKControlPermissionRequest, @@ -521,7 +522,7 @@ async def interrupt(self) -> None: """Send interrupt control request.""" await self._send_control_request({"subtype": "interrupt"}) - async def set_permission_mode(self, mode: str) -> None: + async def set_permission_mode(self, mode: PermissionMode) -> None: """Change permission mode.""" await self._send_control_request( { diff --git a/src/claude_agent_sdk/client.py b/src/claude_agent_sdk/client.py index 18ab818d..ed4574ed 100644 --- a/src/claude_agent_sdk/client.py +++ b/src/claude_agent_sdk/client.py @@ -8,7 +8,14 @@ from . import Transport from ._errors import CLIConnectionError -from .types import ClaudeAgentOptions, HookEvent, HookMatcher, Message, ResultMessage +from .types import ( + ClaudeAgentOptions, + HookEvent, + HookMatcher, + Message, + PermissionMode, + ResultMessage, +) class ClaudeSDKClient: @@ -213,13 +220,14 @@ async def interrupt(self) -> None: raise CLIConnectionError("Not connected. Call connect() first.") await self._query.interrupt() - async def set_permission_mode(self, mode: str) -> None: + async def set_permission_mode(self, mode: PermissionMode) -> None: """Change permission mode during conversation (only works with streaming mode). Args: mode: The permission mode to set. Valid options: - 'default': CLI prompts for dangerous tools - 'acceptEdits': Auto-accept file edits + - 'plan': Plan mode for planning tasks - 'bypassPermissions': Allow all tools (use with caution) Example: diff --git a/src/claude_agent_sdk/types.py b/src/claude_agent_sdk/types.py index 9c09345f..57f35fea 100644 --- a/src/claude_agent_sdk/types.py +++ b/src/claude_agent_sdk/types.py @@ -701,8 +701,7 @@ class SDKControlInitializeRequest(TypedDict): class SDKControlSetPermissionModeRequest(TypedDict): subtype: Literal["set_permission_mode"] - # TODO: Add PermissionMode - mode: str + mode: PermissionMode class SDKHookCallbackRequest(TypedDict):