# Objective Fix `spawn_agent` calls that provide an empty or whitespace-only `session_id`. Currently, an empty string is deserialized as a real session id, so the tool attempts to resume a session with an empty id instead of starting a new subagent session. This can happen when callers serialize an optional `session_id` field as `""`. Related: Refs #55987. This addresses one concrete session-id failure mode described there, but that issue also covers broader OpenAI-compatible provider/subagent reliability concerns. ## Solution - Add custom deserialization for `SpawnAgentToolInput.session_id`. - Treat omitted, `null`, empty, and whitespace-only values as `None`. - Preserve existing behavior for non-empty `session_id` values, so follow-up calls still resume an existing subagent session. - Clarify the field docs. - Add a regression test covering omitted, `null`, empty, whitespace-only, and non-empty values. ## Testing Tested locally on macOS: - `RUSTUP_TOOLCHAIN=1.95.0 cargo fmt --manifest-path zed/Cargo.toml --package agent --check` - `RUSTUP_TOOLCHAIN=1.95.0 cargo test --manifest-path zed/Cargo.toml -p agent -p gpui_macos --features gpui_macos/runtime_shaders deserializes_blank_session_id_as_absent` - `RUSTUP_TOOLCHAIN=1.95.0 cargo build --manifest-path zed/Cargo.toml -p zed -p gpui_platform --features gpui_platform/runtime_shaders` - `RUSTUP_TOOLCHAIN=1.95.0 cargo clippy --manifest-path zed/Cargo.toml -p agent -p gpui_macos --features gpui_macos/runtime_shaders --tests -- -D warnings` The local build uses runtime shaders because this machine does not have the full Xcode Metal CLI toolchain available. CI should cover the standard build matrix. ## Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content adheres to Zed's UI standards ([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) and [icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md) guidelines) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable --- Release Notes: - Fixed `spawn_agent` handling so blank `session_id` values are treated as absent and start a new subagent session. --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de> Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
1 file changedLine totals unavailable