{"record":{"id":"2275e97d1c4df95b","repo":"NousResearch/hermes-agent","slug":"hermes-acp-mode-requires-the-new-github-copilot-cl","errorCode":null,"errorMessage":"Hermes ACP mode requires the NEW GitHub Copilot CLI (github.com/github/copilot-cli), but the binary it just spawned is the deprecated `gh copilot` extension.\n\nInstall the new CLI:\n  npm install -g @github/copilot\n  # then verify with: copilot --help\n\nIf `copilot` already resolves to the new CLI but you still see this,\npoint Hermes at it explicitly:\n  export HERMES_COPILOT_ACP_COMMAND=/path/to/new/copilot\n\nAlternative: use the `copilot` provider (no ACP, hits the Copilot API\ndirectly with a Copilot subscription token) via `hermes setup`.\n\nOriginal error:\n{stderr_text}","messagePattern":"Hermes ACP mode requires the NEW GitHub Copilot CLI \\(github\\.com/github/copilot-cli\\), but the binary it just spawned is the deprecated `gh copilot` extension\\.\n\nInstall the new CLI:\n  npm install -g @github/copilot\n  # then verify with: copilot --help\n\nIf `copilot` already resolves to the new CLI but you still see this,\npoint Hermes at it explicitly:\n  export HERMES_COPILOT_ACP_COMMAND=/path/to/new/copilot\n\nAlternative: use the `copilot` provider \\(no ACP, hits the Copilot API\ndirectly with a Copilot subscription token\\) via `hermes setup`\\.\n\nOriginal error:\n\\{stderr_text\\}","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"agent/copilot_acp_client.py","lineNumber":603,"sourceCode":"                    cwd=self._acp_cwd,\n                    text_parts=text_parts,\n                    reasoning_parts=reasoning_parts,\n                ):\n                    continue\n\n                if msg.get(\"id\") != request_id:\n                    continue\n                if \"error\" in msg:\n                    err = msg.get(\"error\") or {}\n                    raise RuntimeError(\n                        f\"Copilot ACP {method} failed: {err.get('message') or err}\"\n                    )\n                return msg.get(\"result\")\n\n            stderr_text = \"\\n\".join(stderr_tail).strip()\n            if proc.poll() is not None and stderr_text:\n                if _is_gh_copilot_deprecation_message(stderr_text):\n                    raise RuntimeError(\n                        \"Hermes ACP mode requires the NEW GitHub Copilot CLI \"\n                        \"(github.com/github/copilot-cli), but the binary it just \"\n                        \"spawned is the deprecated `gh copilot` extension.\\n\\n\"\n                        \"Install the new CLI:\\n\"\n                        \"  npm install -g @github/copilot\\n\"\n                        \"  # then verify with: copilot --help\\n\\n\"\n                        \"If `copilot` already resolves to the new CLI but you still see this,\\n\"\n                        \"point Hermes at it explicitly:\\n\"\n                        \"  export HERMES_COPILOT_ACP_COMMAND=/path/to/new/copilot\\n\\n\"\n                        \"Alternative: use the `copilot` provider (no ACP, hits the Copilot API\\n\"\n                        \"directly with a Copilot subscription token) via `hermes setup`.\\n\\n\"\n                        f\"Original error:\\n{stderr_text}\"\n                    )\n                raise RuntimeError(f\"Copilot ACP process exited early: {stderr_text}\")\n            raise TimeoutError(f\"Timed out waiting for Copilot ACP response to {method}.\")\n\n        try:\n            _request(","sourceCodeStart":585,"sourceCodeEnd":621,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/agent/copilot_acp_client.py#L585-L621","documentation":"The spawned Copilot process exited and its stderr matches the `gh copilot` deprecation banner: Hermes ACP mode launched the deprecated GitHub Copilot extension instead of the new standalone CLI (github.com/github/copilot-cli). The long message embeds install instructions, an escape hatch to point HERMES_COPILOT_ACP_COMMAND at the correct binary, and the original stderr as evidence.","triggerScenarios":"'copilot' on PATH resolves to the old `gh copilot` extension shim; the process dies immediately after spawn and _is_gh_copilot_deprecation_message(stderr_tail) matches its output.","commonSituations":"Systems where the legacy GitHub CLI extension was installed years ago and shadows the new npm package; PATH ordering placing the old shim first; upgrading Hermes without upgrading Copilot tooling.","solutions":["Install the new CLI: npm install -g @github/copilot and verify with copilot --help.","If both exist, point Hermes explicitly: export HERMES_COPILOT_ACP_COMMAND=/path/to/new/copilot.","Remove or rename the deprecated `gh copilot` shim so the new binary wins on PATH.","Or switch to the direct 'copilot' provider (no ACP) via hermes setup."],"exampleFix":"# before: 'copilot' → old gh extension\nnpm uninstall -g github-copilot-cli 2>/dev/null || gh extension remove copilot\n# after\nnpm install -g @github/copilot\nexport HERMES_COPILOT_ACP_COMMAND=$(which copilot)","handlingStrategy":"validation","validationCode":"import shutil, subprocess\n\ndef resolves_to_new_cli() -> bool:\n    path = shutil.which('copilot')\n    if not path:\n        return False\n    out = subprocess.run([path, '--version'], capture_output=True, text=True).stdout\n    return 'gh' not in out.lower()  # crude check; prefer explicit pin below","typeGuard":null,"tryCatchPattern":"try:\n    client = CopilotACPClient(...)\nexcept RuntimeError as e:\n    if 'deprecated `gh copilot` extension' in str(e):\n        # npm install -g @github/copilot; or set HERMES_COPILOT_ACP_COMMAND; retry\n        ...","preventionTips":["Install the new CLI and remove the old gh extension shim from PATH","Pin HERMES_COPILOT_ACP_COMMAND to the absolute new binary path","After upgrading Copilot tooling, verify with copilot --help"],"tags":["copilot","acp","deprecation","startup"],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}