All plugins

github-copilot

GitHub Copilot model providers for Hermes: copilot (the Copilot API with your Copilot subscription: GPT, Claude, Gemini and Grok models, sign in with hermes auth add copilot or COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN) and copilot-acp (drives your installed GitHub Copilot CLI over ACP). Moved out of Hermes core; profiles that used Copilot get it installed automatically. A Hermes Labs plugin: built by Nous Research, not supported. Disclosure — signs in with GitHub's device-code flow using the Copilot editor OAuth app, exchanges your GitHub token for a short-lived Copilot token at api.github.com and sends your prompts to api.githubcopilot.com (or models.github.ai); it calls GitHub only for profiles that chose Copilot, never runs gh or reads other tools' token files, and caches the exchanged token in <HERMES_HOME>/.copilot_jwt.json. copilot-acp runs your local copilot CLI.

NousResearch168ModelsUpdated 16 hours ago

About

GitHub Copilot model providers for Hermes: copilot (the Copilot API with your Copilot subscription: GPT, Claude, Gemini and Grok models, sign in with hermes auth add copilot or COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN) and copilot-acp (drives your installed GitHub Copilot CLI over ACP). Moved out of Hermes core; profiles that used Copilot get it installed automatically. A Hermes Labs plugin: built by Nous Research, not supported. Disclosure — signs in with GitHub's device-code flow using the Copilot editor OAuth app, exchanges your GitHub token for a short-lived Copilot token at api.github.com and sends your prompts to api.githubcopilot.com (or models.github.ai); it calls GitHub only for profiles that chose Copilot, never runs gh or reads other tools' token files, and caches the exchanged token in <HERMES_HOME>/.copilot_jwt.json. copilot-acp runs your local copilot CLI.

GitHub Copilot

Labs plugin: works, but unsupported. Nous Research built it and does not maintain it. See
what "labs" means.

Part of Hermes Labs Plugins: built by Nous Research, not supported. Formerly
bundled in hermes-agent core.

Use your GitHub Copilot subscription as a Hermes model provider. One plugin, two providers:

ProviderWhat it talks toSign-in
copilot (aliases github-copilot, github-models, github)The Copilot API (api.githubcopilot.com, business/enterprise api.<plan>.githubcopilot.com, GitHub Models at models.github.ai) with your GitHub accounthermes auth add copilot, or a GitHub token in the environment
copilot-acp (aliases github-copilot-acp, copilot-acp-agent)Your installed GitHub Copilot CLI, driven over ACP (copilot --acp --stdio)The CLI's own copilot login

Install

hermes plugins install github-copilot

Needs a Hermes release in which Copilot has left core
(hermes-agent#144788). On an older Hermes the
plugin stays inactive and logs one warning: that Hermes still ships its own Copilot support, which keeps
working.

Sign in

copilot:

hermes auth add copilot          # GitHub device-code sign-in: open the URL, enter the code
hermes auth add copilot --api-key github_pat_...   # or paste a token

The device-code login uses the same GitHub OAuth app as VS Code's Copilot (it mints ghu_ tokens the
Copilot API exchanges for a short-lived Copilot token, so enterprise-only models work). hermes model →
GitHub Copilot offers the same login, and the Desktop app's Accounts tab signs you in without a terminal.

Or set a token. The first supported one wins, in the Copilot CLI's order:

Env varNotes
COPILOT_GITHUB_TOKENWhere the device-code login in hermes model / Desktop saves its token
GH_TOKEN
GITHUB_TOKEN

Supported token types: OAuth gho_*, GitHub App ghu_*, fine-grained PAT github_pat_* with the
Copilot Requests permission. Classic PATs (ghp_*) are rejected by the Copilot API.
COPILOT_API_BASE_URL overrides the API base URL.

GH_TOKEN and GITHUB_TOKEN are shared with other GitHub tools, so on their own they never make Hermes
contact GitHub. The plugin calls GitHub (token exchange, model list) only once you have chosen Copilot:
COPILOT_GITHUB_TOKEN is set, copilot appears in config.yaml (model, fallback_providers /
fallback_model, delegation, an auxiliary task, a MoA slot), you signed in with hermes auth add copilot, or you are in hermes model → GitHub Copilot. Until then the model picker shows the curated
Copilot list.

copilot-acp: install the CLI (npm install -g @github/copilot) and run copilot login. Hermes
starts copilot --acp --stdio per request; point it elsewhere with HERMES_COPILOT_ACP_COMMAND (or
COPILOT_CLI_PATH) and HERMES_COPILOT_ACP_ARGS.

Premium requests

Copilot reads the x-initiator header to tell a request you started (user) from an agent follow-up
(agent). By design, copilot sends x-initiator: agent on every request, except the first request of a
user turn on the exact host api.githubcopilot.com (and GitHub Models, models.github.ai), which says
user, as Hermes core did. Accounts whose token exchange hands out a plan host (api.individual.,
api.business. or api.enterprise.githubcopilot.com) send agent on every request.

What changed from the core version: no gh or Copilot CLI token files

Hermes core's Copilot also picked up a token from gh auth token and from the gh / Copilot CLI token
files (~/.config/gh/hosts.yml, ~/.copilot/config.json, ~/.config/github-copilot/hosts.json and
apps.json). This plugin does not. Catalog plugins get credentials only through Hermes (catalog rule 11):
reading another tool's login hands its token to code that tool never authorized. If you relied on
gh auth login, run hermes auth add copilot once, or export GH_TOKEN="$(gh auth token)" yourself.
A gh_cli credential the old core had pooled is dropped automatically.

copilot-acp is unaffected in practice: the Copilot CLI still uses its own login. Hermes only stopped
peeking at the CLI's files to show "signed in"; without an env token the Accounts card reads "Managed by
the GitHub Copilot CLI".

Disclosure

  • copilot talks to github.com (device-code login), api.github.com (/copilot_internal/v2/token,
    the GitHub → Copilot token exchange) and api.githubcopilot.com / your plan's Copilot host /
    models.github.ai (model list and inference). Requests carry VS Code-style editor headers
    (Editor-Version, Copilot-Integration-Id: vscode-chat), as Copilot requires.
  • Tokens are stored by Hermes: the pool in $HERMES_HOME/auth.json (hermes auth add), env tokens in
    $HERMES_HOME/.env, and the exchanged Copilot token (~30 min lifetime) in
    $HERMES_HOME/.copilot_jwt.json (mode 0600) so a restart during a network blip can reuse it.
  • copilot-acp runs your own copilot CLI as a subprocess. Whatever that CLI does under its own login
    and settings is between you and GitHub; Hermes sends it the conversation and reads its replies.
  • No telemetry.

Tests

cd github-copilot
HERMES_AGENT_REPO=../../hermes-agent PYTHONPATH=../../hermes-agent python -m pytest -q

On a core that still bundles Copilot the suite skips everything but the inert-guard test.

README from the reviewed commit df8f132; it updates when the author re-pins.

More by NousResearch

29 plugins by NousResearch in the catalog.

NousResearchaccent-pickerOKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.OfficialDesktop app676NousResearchadvanced-delegationTwo extra delegation modes for delegate_task, next to the built-in default. Model routes (delegation.backend: model_map): the agent picks a named model route per subagent from a list you define (e.g. fast, deep, local). Profile routes (delegation.backend: profile_routes): the agent runs a subagent as one of your Hermes profiles, with that profile's own model, credentials, skills and SOUL.md. Only route names and their one-line descriptions reach the model. Adds hermes delegation config (pick the mode and edit its routes; --show prints the setup) and the /delegation slash command (save a mode for the next session, or --now to apply it to the current chat). Needs Hermes 0.22.5 or newer, the first release with pluggable delegation providers; Hermes 0.22.0 to 0.22.4 refuses to install it, and on a core older than 0.22.0 it installs, logs one warning and does nothing. A model route can set daybreak: true to run its model with OpenAI's Daybreak trusted-access program; it is sent only from your own CLI, TUI or Desktop chats, on openai-codex, for models your Codex catalog lists, and a route that breaks a rule is refused. Disclosure — no Python dependencies and no network or model calls of its own, except that a Daybreak route checks the Codex catalog through core's cached lookup with your existing Codex login; subagents run through core's delegate_task on the routes you configured. Writes only delegation.backend and delegation.backends.* (model_map / profile_routes) in the active profile's config.yaml, through core's config writer. A model route's optional api_key is stored in config.yaml in plain text (provider: keeps keys in .env / auth.json). Listing a profile under profile routes lets this profile's subagents use that profile's credentials, SOUL.md and terminal policy.Officialtools676NousResearchagent-importershermes import-agent: import an OpenClaw (~/.openclaw, or legacy ~/.clawdbot / ~/.moltbot), Claude Code (~/.claude), Codex CLI (~/.codex), Cursor (~/.cursor), Grok Bot (a self-export the Bot writes from a prompt the importer prints) or OpenBot desktop (its openbot.db) setup into Hermes in one command; always previews first and asks before applying. Claude Code / Codex / Cursor: instructions, Cursor rules and memories become memory entries, Bash permission rules become command allow/deny lists, MCP servers land in config.yaml, skills are copied, and --sync re-imports sources that changed. OpenClaw (core's former hermes claw migrate; the plugin keeps that spelling, hermes claw cleanup and the openclaw-migration skill): persona, memories, skills, model and messaging settings, MCP servers and agent behaviour. Formerly built into Hermes core; hermes setup offers to install it when it finds one of these agents, and profiles with a registered sync source are migrated automatically. Disclosure — no Python dependencies, no network calls and no model calls. Claude Code / Codex / Cursor: reads those agents' local config trees (never their credential files; secret-looking MCP env vars and headers are stripped and listed) and writes only into the active profile (memories/MEMORY.md with a backup, config.yaml, skills/ and import-sync.json). OpenClaw: reads the OpenClaw dir (openclaw.json, its .env, workspace files such as SOUL.md / MEMORY.md / USER.md, skills); API keys and bot tokens come over only with --migrate-secrets (allowlisted names, shown in the preview). It writes into the active profile (config.yaml, .env, SOUL.md, memories/, skills/openclaw-imports/, a migration/openclaw/<time>/ report with item backups, and a backups/pre-migration-*.zip restore point), plus a workspace dir only when --workspace-target names one. It runs local pgrep / systemctl / tasklist checks to warn when OpenClaw or a Hermes gateway is still running, and hermes claw cleanup renames the OpenClaw dir to *.pre-migration after a confirmation. Grok Bot / OpenBot: instructions become SOUL.md, memories and user facts become memory entries, skills land in skills/<source>-imports/, scheduled routines become paused cron jobs (--activate-routines to start them) and event routines a notes file; credential-looking export keys refuse the file, and secret MCP env vars and headers are stripped and listed. OpenBot's database is opened read-only (or read from a scratch copy that is deleted after the read).Officialtools676NousResearchblenderOfficial Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Needs Git and uv; Blender 5.1+ is not needed at install. The skill opens Blender itself when a task needs it and, after you agree, installs Blender and Blender Lab's MCP add-on. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; the skill starts Blender with online access for that session only (your saved preference is unchanged), and the add-on's local server on port 9876 has no password, so any program on this computer can use it while Blender is open; only after you agree does the skill download Blender from download.blender.org (about 400 MB, about 1.5 GB unpacked), check it against blender.org's sha256 list and install it in your own folder without administrator rights (Linux ~/.local/opt, macOS ~/Applications, Windows %LOCALAPPDATA%\Programs\Blender Foundation; never over an existing Blender), and download the v1.0.3 add-on, check its hash and install or enable it; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv. Server discovery does not prove scene readiness.Officialtools676

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section