{"record":{"id":"f0fc16673df81f2e","repo":"NousResearch/hermes-agent","slug":"moa-aggregator-cannot-be-another-moa-preset","errorCode":null,"errorMessage":"MoA aggregator cannot be another MoA preset","messagePattern":"MoA aggregator cannot be another MoA preset","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"agent/moa_loop.py","lineNumber":1757,"sourceCode":"        ephemeral advisor result.  Reusing the guidance avoids a second costly\n        fan-out while keeping the aggregator request aligned with the compacted\n        history.\n        \"\"\"\n        guidance = prepared.get(\"guidance\")\n        agg_messages = [dict(message) for message in messages]\n        if guidance:\n            _attach_reference_guidance(agg_messages, str(guidance))\n        return {**prepared, \"messages\": agg_messages}\n\n    def _call_prepared_aggregator(\n        self, prepared: dict[str, Any], api_kwargs: dict[str, Any]\n    ) -> Any:\n        \"\"\"Send an already prepared MoA aggregator request exactly once.\"\"\"\n        agg_messages = prepared[\"messages\"]\n        aggregator = prepared[\"aggregator\"]\n        aggregator_temperature = prepared[\"aggregator_temperature\"]\n        if aggregator.get(\"provider\") == \"moa\":\n            raise RuntimeError(\"MoA aggregator cannot be another MoA preset\")\n        agg_kwargs = dict(api_kwargs)\n        max_tokens: Any = agg_kwargs.get(\"max_tokens\")\n        tools: Any = agg_kwargs.get(\"tools\")\n        extra_body: Any = agg_kwargs.get(\"extra_body\")\n        agg_runtime = _slot_runtime(aggregator)\n        try:\n            from agent.agent_runtime_helpers import (\n                plan_cache_sections_for_destination,\n            )\n\n            guidance = prepared.get(\"guidance\")\n            planning_messages = agg_messages\n            if guidance:\n                planning_messages = peel_reference_guidance(\n                    agg_messages,\n                    str(guidance),\n                )\n            # plan_cache_sections_for_destination never mutates its inputs","sourceCodeStart":1739,"sourceCodeEnd":1775,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/moa_loop.py#L1739-L1775","documentation":"Error \"MoA aggregator cannot be another MoA preset\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/moa_loop.py:1757 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Choose a non-MoA model/preset as the aggregator.","Flatten the MoA configuration so the aggregator is a plain model."],"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-15T22:17:37.221Z"}