{"repo":"NousResearch/hermes-agent","public_id":"3143","display_label":"Empty message content blocks causing API 400 errors","summary":"Multiple bug reports and fix attempts addressing empty or whitespace-only text content blocks being sent to Anthropic and compatible APIs, resulting in HTTP 400 validation errors. Fixes span message sanitization, filtering, and validation across chat, Bedrock, and custom provider code paths.","subsystem":"acp_adapter","counts":{"members":11,"open_issues":1,"open_issues_distinct":1,"open_prs":2,"closed_issues":3,"merged_prs":1,"attempt_prs":6},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":3322},"resolution":{"state":"partially_resolved","by":"pr-3322"},"freshness":{"state":"stale","last_verified_at":"2026-03-27T02:24:03+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.14690909090909093},"fix_edges":[{"issue_number":3143,"pr_number":3322,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":3143,"title":"[Bug]: Discord gateway passes empty user messages to Anthropic API — \"user messages must have non-empty content\" (400)","url":null,"state":"closed"},{"kind":"issue","number":9064,"title":"[Bug]: 'GptVParam.Messages' Error:Field validation for 'Messages' failed on the 'required' tag","url":null,"state":"closed"},{"kind":"issue","number":9486,"title":"[Bug]:  Bedrock API 400 Error: \"text content blocks must be non-empty\" when using custom provider","url":null,"state":"closed"},{"kind":"issue","number":19309,"title":"[Bug]: HTTP 400 on B.AI API","url":null,"state":"open"},{"kind":"pr","number":3148,"title":"fix: prevent empty user messages from reaching Anthropic API","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3f95e741a","number":0},{"kind":"commit","value":"3f95e741a77de69904ea4b600cac8c2acbc8ab8d","number":0},{"kind":"commit","value":"1756dec317aa","number":0},{"kind":"pr","value":"#3322","number":3322},{"kind":"pr","value":"#3143","number":3143},{"kind":"pr","value":"#1955","number":1955}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":3149,"title":"fix: validate empty user messages to prevent Anthropic API 400 errors","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#3322","number":3322}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":3322,"title":"fix: validate empty user messages to prevent Anthropic API 400 errors","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/anthropic_adapter.py","gateway/platforms/discord.py","tests/test_anthropic_adapter.py"]},{"kind":"pr","number":9155,"title":"Fix custom provider API mode detection for OpenAI-compatible endpoints","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#9064","number":9064}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":9491,"title":"fix(anthropic): filter empty text blocks from assistant messages","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#11929","number":11929},{"kind":"pr","value":"#11929","number":11929}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":19496,"title":"fix(chat): sanitize empty text content blocks","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"724ab9098","number":0}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":24743,"title":"fix(bedrock): sanitize empty text blocks for custom providers and dir…","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}