diff --git a/src/claude_agent_sdk/_internal/transport/subprocess_cli.py b/src/claude_agent_sdk/_internal/transport/subprocess_cli.py index a4882db1..f7eeb99c 100644 --- a/src/claude_agent_sdk/_internal/transport/subprocess_cli.py +++ b/src/claude_agent_sdk/_internal/transport/subprocess_cli.py @@ -233,6 +233,9 @@ def _build_command(self) -> list[str]: if self._options.resume: cmd.extend(["--resume", self._options.resume]) + if self._options.session_id: + cmd.extend(["--session-id", self._options.session_id]) + # Handle settings and sandbox: merge sandbox into settings if both are provided settings_value = self._build_settings_value() if settings_value: diff --git a/src/claude_agent_sdk/types.py b/src/claude_agent_sdk/types.py index 9c09345f..5de77139 100644 --- a/src/claude_agent_sdk/types.py +++ b/src/claude_agent_sdk/types.py @@ -622,6 +622,7 @@ class ClaudeAgentOptions: system_prompt: str | SystemPromptPreset | None = None mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict) permission_mode: PermissionMode | None = None + session_id: str | None = None continue_conversation: bool = False resume: str | None = None max_turns: int | None = None diff --git a/tests/test_transport.py b/tests/test_transport.py index fe9b6b22..369bb75c 100644 --- a/tests/test_transport.py +++ b/tests/test_transport.py @@ -193,6 +193,17 @@ def test_session_continuation(self): assert "--resume" in cmd assert "session-123" in cmd + def test_build_command_with_session_id(self): + """Test building CLI command with session_id option.""" + transport = SubprocessCLITransport( + prompt="test", + options=make_options(session_id="my-session-uuid"), + ) + + cmd = transport._build_command() + assert "--session-id" in cmd + assert "my-session-uuid" in cmd + def test_connect_close(self): """Test connect and close lifecycle."""