[BUG] SendMessage rejects string messages when summary is omitted, but schema marks summary as optional
Preflight Checklist - [x] I have searched existing issues and this hasn't been reported yet - [x] This is a single bug report - [x] I am using the latest version of Claude Code
What's Wrong?
When the model calls SendMessage with a plain string message and omits summary, the tool rejects the call:
Error: summary is required when message is a string
The tool's input schema declares summary as optional (with a description note that it's "required when message is a string"). The model follows the schema type and reasonably omits the optional field, then gets rejected at runtime.
This happens frequently when the model sends simple messages to teammates, tries to shut down agents, or delegates tasks. It creates a retry loop where the model has to re-call the tool with summary added.
What Should Happen?
Either:
- Mark
summaryas required in the schema so the model always includes it, or - Auto-generate a summary from the first few words of the message when omitted (graceful fallback)
Option 2 would be more resilient since models will occasionally miss even required fields.
Error Messages/Logs
Error: summary is required when message is a string
Steps to Reproduce
- Enable agent teams
- Spawn teammates
- Have the lead agent communicate with teammates using string messages
- Observe that the model intermittently omits
summary(since the schema says optional) - The call fails with the error above
The model retries with summary included and succeeds, but this wastes a turn and tokens each time.
Claude Model: Opus 4.6
Is this a regression? I don't know
Claude Code Version: 2.1.88
Platform: Anthropic API
Operating System: Other Linux (WSL2)
Terminal/Shell: WSL (Windows Subsystem for Linux)
Additional Information
The description text mentions "required when message is a string" but models follow the schema type declaration, not description prose. Making the field truly required in the schema (or using a discriminated union where string messages require summary) would prevent the mismatch.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗