Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/claude_agent_sdk/_internal/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
)

from ..types import (
PermissionMode,
PermissionResultAllow,
PermissionResultDeny,
SDKControlPermissionRequest,
Expand Down Expand Up @@ -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(
{
Expand Down
12 changes: 10 additions & 2 deletions src/claude_agent_sdk/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
3 changes: 1 addition & 2 deletions src/claude_agent_sdk/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down