# Treat blank spawn_agent session IDs as absent \(\#60893\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/f7d481c4156924089c4f98f08aa88a605d5e8ea9)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: f7d481c4156924089c4f98f08aa88a605d5e8ea9

Requested commit: f7d481c4156924089c4f98f08aa88a605d5e8ea9

Commit: f7d481c4156924089c4f98f08aa88a605d5e8ea9

Tree: c14d257ad9f035a9a5082d6cc05adac31268f02f

Author: Nevo Poran

Committer: GitHub

## Message

```
Treat blank spawn_agent session IDs as absent (#60893)

# 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>
```

## Parents

- [104ccf4bb6eace1b7b01a9929c301f362f0c67f9](https://git.cafe/gitcafe/zed/commit/104ccf4bb6eace1b7b01a9929c301f362f0c67f9?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/f7d481c4156924089c4f98f08aa88a605d5e8ea9?format=markdown)
