[BUG] SendMessage rejects string messages when summary is omitted, but schema marks summary as optional

Resolved 💬 2 comments Opened Mar 31, 2026 by camjac251 Closed May 5, 2026
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:

  1. Mark summary as required in the schema so the model always includes it, or
  2. 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

  1. Enable agent teams
  2. Spawn teammates
  3. Have the lead agent communicate with teammates using string messages
  4. Observe that the model intermittently omits summary (since the schema says optional)
  5. 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗