{"record":{"id":"f7628addfe9b6cf9","repo":"NousResearch/hermes-agent","slug":"plugin-plugin-id-r-cannot-route-through-auxiliar","errorCode":null,"errorMessage":"Plugin {plugin_id!r} cannot route through auxiliary task {task!r} — a plugin may only pass a task key it registered itself via ctx.register_auxiliary_task() (or a built-in key when plugins.entries.{plugin_id}.llm.allow_task_override is true).","messagePattern":"Plugin (.+?) cannot route through auxiliary task (.+?) — a plugin may only pass a task key it registered itself via ctx\\.register_auxiliary_task\\(\\) \\(or a built-in key when plugins\\.entries\\.(.+?)\\.llm\\.allow_task_override is true\\)\\.","errorType":"validation","errorClass":"PluginLlmTrustError","httpStatus":null,"severity":"error","filePath":"agent/plugin_llm.py","lineNumber":435,"sourceCode":"        logger.warning(\n            \"plugin_llm task routing denied: plugin %r requested built-in \"\n            \"auxiliary task %r without plugins.entries.%s.llm.allow_task_override\",\n            plugin_id,\n            task,\n            plugin_id,\n        )\n        raise PluginLlmTrustError(\n            f\"Plugin {plugin_id!r} cannot route through the built-in auxiliary \"\n            f\"task {task!r} (set plugins.entries.{plugin_id}.llm.\"\n            f\"allow_task_override to true to allow).\"\n        )\n    logger.warning(\n        \"plugin_llm task routing denied: plugin %r requested auxiliary task %r \"\n        \"it did not register\",\n        plugin_id,\n        task,\n    )\n    raise PluginLlmTrustError(\n        f\"Plugin {plugin_id!r} cannot route through auxiliary task {task!r} — a \"\n        f\"plugin may only pass a task key it registered itself via \"\n        f\"ctx.register_auxiliary_task() (or a built-in key when plugins.entries.\"\n        f\"{plugin_id}.llm.allow_task_override is true).\"\n    )\n\n\n# ---------------------------------------------------------------------------\n# Input normalization\n# ---------------------------------------------------------------------------\n\n\ndef _normalize_input_block(block: PluginLlmInput) -> Dict[str, Any]:\n    \"\"\"Coerce a structured input block to a plain dict the message\n    builder understands. Unknown shapes raise ``ValueError``.\"\"\"\n    if isinstance(block, PluginLlmTextInput):\n        return {\"type\": \"text\", \"text\": block.text}\n    if isinstance(block, PluginLlmImageInput):","sourceCodeStart":417,"sourceCodeEnd":453,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/plugin_llm.py#L417-L453","documentation":"Error \"Plugin {plugin_id!r} cannot route through auxiliary task {task!r} — a plugin may only pass a task key it registered itself via ctx.register_auxiliary_task() (or a built-in key when plugins.entries.{plugin_id}.llm.allow_task_override is true).\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at agent/plugin_llm.py:435 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Register the task key from the plugin via ctx.register_auxiliary_task() before using it.","Enable plugins.entries.<plugin>.llm.allow_task_override if routing to a built-in task is intended."],"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"}