Skip to content

Commit a0ee361

Browse files
mike-nebariclaude
andcommitted
feat: expose session_id in ClaudeAgentOptions
Add session_id field to ClaudeAgentOptions that maps to the CLI's --session-id flag, allowing server-side applications to control the session file name for deterministic session file paths. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 6b3044c commit a0ee361

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

src/claude_agent_sdk/_internal/transport/subprocess_cli.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ def _build_command(self) -> list[str]:
233233
if self._options.resume:
234234
cmd.extend(["--resume", self._options.resume])
235235

236+
if self._options.session_id:
237+
cmd.extend(["--session-id", self._options.session_id])
238+
236239
# Handle settings and sandbox: merge sandbox into settings if both are provided
237240
settings_value = self._build_settings_value()
238241
if settings_value:

src/claude_agent_sdk/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@ class ClaudeAgentOptions:
622622
system_prompt: str | SystemPromptPreset | None = None
623623
mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)
624624
permission_mode: PermissionMode | None = None
625+
session_id: str | None = None
625626
continue_conversation: bool = False
626627
resume: str | None = None
627628
max_turns: int | None = None

tests/test_transport.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,17 @@ def test_session_continuation(self):
193193
assert "--resume" in cmd
194194
assert "session-123" in cmd
195195

196+
def test_build_command_with_session_id(self):
197+
"""Test building CLI command with session_id option."""
198+
transport = SubprocessCLITransport(
199+
prompt="test",
200+
options=make_options(session_id="my-session-uuid"),
201+
)
202+
203+
cmd = transport._build_command()
204+
assert "--session-id" in cmd
205+
assert "my-session-uuid" in cmd
206+
196207
def test_connect_close(self):
197208
"""Test connect and close lifecycle."""
198209

0 commit comments

Comments
 (0)