{"record":{"id":"b4c4a44092a8ae31","repo":"NousResearch/hermes-agent","slug":"codex-responses-input-idx-message-item-must-hav","errorCode":null,"errorMessage":"Codex Responses input[{idx}] message item must have content list.","messagePattern":"Codex Responses input\\[(.+?)\\] message item must have content list\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"agent/codex_responses_adapter.py","lineNumber":853,"sourceCode":"\n        if item_type == \"compaction\":\n            # Replayed native server-side compaction checkpoint (gpt-5.6,\n            # direct OpenAI/Codex routes). Opaque, issuer-sealed; forward\n            # only the fields the API defines.\n            encrypted = item.get(\"encrypted_content\")\n            if isinstance(encrypted, str) and encrypted:\n                normalized.append(\n                    {\"type\": \"compaction\", \"encrypted_content\": encrypted}\n                )\n            continue\n\n        if item_type == \"message\":\n            role = item.get(\"role\")\n            if role != \"assistant\":\n                raise ValueError(f\"Codex Responses input[{idx}] message items must have role='assistant'.\")\n            content = item.get(\"content\")\n            if not isinstance(content, list):\n                raise ValueError(f\"Codex Responses input[{idx}] message item must have content list.\")\n            normalized_content = []\n            for part_idx, part in enumerate(content):\n                if not isinstance(part, dict):\n                    raise ValueError(\n                        f\"Codex Responses input[{idx}] message content[{part_idx}] must be an object.\"\n                    )\n                part_type = part.get(\"type\")\n                if part_type not in {\"output_text\", \"text\"}:\n                    raise ValueError(\n                        f\"Codex Responses input[{idx}] message content[{part_idx}] has unsupported type {part_type!r}.\"\n                    )\n                text = part.get(\"text\", \"\")\n                if text is None:\n                    text = \"\"\n                if not isinstance(text, str):\n                    text = str(text)\n                normalized_content.append({\"type\": \"output_text\", \"text\": sanitize_text(text)})\n            if not normalized_content:","sourceCodeStart":835,"sourceCodeEnd":871,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/codex_responses_adapter.py#L835-L871","documentation":"Error \"Codex Responses input[{idx}] message item must have content list.\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/codex_responses_adapter.py:853 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a content list on every assistant message item.","Fix the conversion that emitted a message item without content."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}