claude-code - 💡(How to fix) Fix [BUG] API 400 "messages[1].role must be either 'user' or 'assistant', but got 'system'" (v2.1.156)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

API Error: 400 messages[1].role must be either 'user' or 'assistant', but got 'system'

What Should Happen?

Claude Code should either:

place system prompts in the top-level system field or ensure messages[] only contains user / assistant roles

The request should be accepted by the Anthropic API.

Error Messages/Logs

Code Example

API Error: 400 messages[1].role must be either 'user' or 'assistant', but got 'system'

### What Should Happen?

Claude Code should either:

place system prompts in the top-level system field
or ensure messages[] only contains user / assistant roles

The request should be accepted by the Anthropic API.

### Error Messages/Logs
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Bug Description

Claude Code 2.1.156 appears to send an invalid system role inside the messages array when calling the Anthropic Messages API.

This results in the following API error:

API Error: 400 messages[1].role must be either 'user' or 'assistant', but got 'system'

### What Should Happen?

Claude Code should either:

place system prompts in the top-level system field
or ensure messages[] only contains user / assistant roles

The request should be accepted by the Anthropic API.

### Error Messages/Logs

```shell
API Error: 400 messages[1].role must be either 'user' or 'assistant', but got 'system'

Steps to Reproduce

  1. Start Claude Code normally

  2. Enter any prompt, for example: test

Claude Model

Other

Is this a regression?

Yes, this worked in a previous version

Last Working Version

No response

Claude Code Version

2.1.156

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

<img width="1178" height="324" alt="Image" src="https://github.com/user-attachments/assets/c886c2ed-e9d3-4b4a-ba6a-96dd0484fd2d" />

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING