NousResearch/hermes-agent · error · ValueError

Reserved Harmony tokens in a JSON object key cannot be neutr

Error message

Reserved Harmony tokens in a JSON object key cannot be neutralized without changing its contract.

What it means

Error "Reserved Harmony tokens in a JSON object key cannot be neutralized without changing its contract." thrown in NousResearch/hermes-agent.

Source

Thrown at agent/codex_responses_adapter.py:141

    result.append(text[original_cursor:])
    return "".join(result)


def _neutralize_harmony_structure(value: Any) -> Any:
    """Neutralize JSON-like values; normalize tuples and reject unsafe keys.

    Rewriting an object key could desynchronize a tool schema from the executor
    contract, so a reserved token there is rejected explicitly instead.
    """
    if isinstance(value, str):
        return _neutralize_harmony_tokens(value)
    if isinstance(value, (list, tuple)):
        return [_neutralize_harmony_structure(item) for item in value]
    if isinstance(value, dict):
        normalized = {}
        for key, item in value.items():
            if isinstance(key, str) and _neutralize_harmony_tokens(key) != key:
                raise ValueError(
                    "Reserved Harmony tokens in a JSON object key cannot be "
                    "neutralized without changing its contract."
                )
            normalized[key] = _neutralize_harmony_structure(item)
        return normalized
    return value


# ---------------------------------------------------------------------------
# Multimodal content helpers
# ---------------------------------------------------------------------------

def _chat_content_to_responses_parts(content: Any, *, role: str = "user") -> List[Dict[str, Any]]:
    """Convert chat-style multimodal content to Responses API input parts.

    Input:  ``[{"type":"text"|"image_url", ...}]`` (native OpenAI Chat format)
    Output: ``[{"type":"input_text"|"output_text"|"input_image", ...}]`` (Responses format)

View on GitHub (pinned to c896c09c42)

Solutions

  1. Rename the JSON object key so it does not collide with reserved Harmony tokens.
  2. Restructure the payload so reserved tokens never appear as keys.

When it happens

Trigger: Thrown at agent/codex_responses_adapter.py:141 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/bdce578e402c0e00. Report an issue: GitHub.