← All Guides

Coding Agent Guide

Hermes Agent + Cursor: Using the Cursor IDE and CLI Alongside Hermes

Cursor is an AI code editor with a companion command-line agent. Hermes Agent is an always-on agent that lives in your chat apps. They connect in two directions: Cursor can reach your Hermes messaging channels over MCP, and Hermes can hand coding jobs to the Cursor CLI. This guide covers both, plus how to keep one set of project rules for the two, based on the current upstream docs of each.

Which page do you need?

Two topics share the word “Cursor” on this site:

  • Cursor as a product — how an AI code editor compares with a platform for deploying chat bots. See OpenClaw Launch vs Cursor.
  • Cursor working together with Hermes — this page.

Two tools, two jobs

Cursor is built for a developer sitting in a repo: an editor with an agent that reads and edits files, runs commands and calls MCP servers. It also ships a terminal agent, the Cursor CLI, which installs a binary called agent (also available as cursor-agent).

Hermes Agent solves a different problem. It runs as a long-lived gateway connected to Telegram, Discord, Slack and other platforms, with memory, skills, cron jobs and a model of your choosing. It keeps working when your laptop lid is closed. So the useful question is not which one to use, but which job each one should own and how they hand work to each other.

CursorHermes Agent
Where it runsYour machine, while you workA server or always-on machine
How you talk to itEditor chat, or agent in a terminalTelegram, Discord, Slack, the CLI and more
Best atRepo-wide edits with you watchingMessaging, memory, schedules, long-running automation
MCPClient (.cursor/mcp.json)Client (mcp_servers) and server (hermes mcp serve)

Direction 1: Cursor uses Hermes over MCP

Hermes can run as an MCP server, and its docs name Cursor as one of the intended clients. hermes mcp serve starts a stdio server that exposes your messaging channels through ten tools, including conversations_list, messages_read, events_wait, messages_send, channels_list and the approval tools permissions_list_open and permissions_respond.

Cursor reads MCP servers from .cursor/mcp.json in a project or ~/.cursor/mcp.json for all projects:

{
  "mcpServers": {
    "hermes": {
      "command": "hermes",
      "args": ["mcp", "serve"]
    }
  }
}

If hermes is not on the PATH Cursor sees, use the full path to the binary, for example ~/.hermes/hermes-agent/venv/bin/hermes. The Cursor CLI reads the same files, and agent mcp list and agent mcp list-tools hermes confirm the server loaded.

Now a Cursor session can say “post the migration summary to my Telegram” or wait for a reviewer’s reply in Discord before continuing. The limits, from the Hermes docs:

  • The server is stdio-only, so Hermes must be installed on the same machine as Cursor.
  • Reading conversations works without the gateway; sending needs hermes gateway running with the platforms connected.
  • Sends are text-only. attachments_fetch can read incoming media, but messages_send cannot attach files.

More on both MCP roles in Hermes Agent + MCP.

Direction 2: Hermes delegates coding to the Cursor CLI

Hermes has a terminal tool, and the Cursor CLI has a print mode for scripts. That is enough for Hermes to take a request from chat, run a coding job, and report back. Install it with Cursor’s script:

curl https://cursor.com/install -fsS | bash

On a headless machine, authenticate with an API key instead of a browser login, either --api-key or the CURSOR_API_KEY environment variable. Then the commands Hermes would run look like this:

agent -p --mode ask "Explain how auth works in this repo"
agent -p --mode plan "Propose a plan to split the payments module"
agent -p --force --output-format json "Fix the failing unit tests"
agent -p --force --worktree fix-tests "Fix the failing unit tests"

What the flags do, from agent --help on Cursor CLI 2026.09.23:

  • -p / --print runs non-interactively and prints the result. Without it the CLI opens an interactive session that an agent cannot drive cleanly.
  • --mode ask and --mode plan are read-only: questions and plans, no edits.
  • --force (alias --yolo) allows commands unless explicitly denied. An unattended run that edits files or runs tests usually needs it, so give it that power only in a disposable checkout.
  • --worktree runs the job in an isolated git worktree under ~/.cursor/worktrees/, which is the safer place for a --force run.
  • --output-format json returns one structured result; stream-json emits events for long jobs.
  • --trust skips the workspace trust prompt, and --model picks a model from your Cursor plan.

Upstream Hermes ships delegation skills for Claude Code, Codex and OpenCode, but not for Cursor. The Codex skill is a good template: it runs the CLI through terminal, and for long jobs starts it in the background and checks on it with the process tool. A Cursor skill is the same shape with the commands above. See Hermes Agent skills for where a custom SKILL.md goes.

Why delegate at all, when Hermes can edit files itself? Two reasons. A coding job billed to your Cursor plan does not spend the model budget your Hermes bot uses for chat. And the repo exploration stays inside Cursor’s session instead of filling Hermes’s context window.

Share one set of project rules

Both tools read instruction files from the project, and they overlap:

  • Hermes loads .cursorrules and .cursor/rules/*.mdc as project context. They are last in its priority order, .hermes.md then AGENTS.md then CLAUDE.md then Cursor rules, and only the first match is loaded.
  • Cursor reads .cursor/rules/*.mdc and also supports AGENTS.md in the project root and in subdirectories.

So if a repo has both an AGENTS.md and Cursor rules, Hermes reads only the AGENTS.md. The simplest setup is to put shared conventions in AGENTS.md, which both tools read, and keep Cursor-only rules in .cursor/rules. Hermes also scans context files for prompt injection before loading them, so rule files pulled from other people’s repos are checked first.

Moving MCP servers from Cursor to Hermes

If Cursor already has your MCP servers set up, the entries translate to Hermes’s mcp_servers block in ~/.hermes/config.yaml. JSON becomes YAML, but the fields (command, args, env) keep their meaning. Hermes accepts Cursor-style ${env:NAME} references, and ${userHome}, ${workspaceFolder} and ${pathSeparator} are substituted too, so values usually copy across unchanged:

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "${env:GITHUB_TOKEN}"

There is no one-command import for Cursor. hermes import-agent handles Claude Code and Codex setups only, so Cursor entries are copied by hand.

Hermes inside the editor?

Hermes can also run as an Agent Client Protocol server with hermes acp, which lets an editor show Hermes’s chat, diffs and approvals in a panel. The Hermes docs give setup for VS Code (through the ACP Client extension), Zed and JetBrains. Cursor is not among the documented hosts, so for Cursor the supported bridge is MCP, as in Direction 1.

Which setup fits?

You wantUse
A coding session that notifies people or waits for replies in chatCursor + hermes mcp serve (Direction 1)
To start a coding job from a Telegram or Discord messageHermes + Cursor CLI via terminal (Direction 2)
The same conventions in both toolsA shared AGENTS.md
Heavy repo work with you watching the diffsCursor on its own

On OpenClaw Launch

A managed bot on OpenClaw Launch runs in our cloud, not on your laptop. Because hermes mcp serve is stdio-only, the Direction 1 bridge needs a local Hermes install and does not attach to a hosted bot. The split that works well: keep Cursor on your own machine for repo work, and let the hosted Hermes or OpenClaw bot handle the always-on part, such as chat platforms, memory and schedules. On the OpenClaw side, the bundled coding-agent skill delegates to Codex, Claude Code and OpenCode; like Hermes, it has no Cursor-specific skill.

Hermes + Cursor FAQ

Can Cursor send Telegram or Discord messages through Hermes?

Yes, when Hermes is installed on the same machine as Cursor. hermes mcp serve runs Hermes as a stdio MCP server, and the Hermes docs name Cursor as one of the intended clients. Add it to .cursor/mcp.json or ~/.cursor/mcp.json and Cursor’s agent gets tools such as conversations_list, messages_read and messages_send. Reading works without the gateway; sending needs hermes gateway running with the platforms connected.

Does Hermes Agent have a built-in Cursor skill?

No. As of September 2026 upstream Hermes bundles delegation skills for Claude Code, Codex and OpenCode, but none for Cursor. Hermes can still drive the Cursor CLI through its terminal tool, because the CLI has a non-interactive print mode (agent -p). A short custom skill makes that repeatable.

Does Hermes read my Cursor rules?

Yes. Hermes loads .cursorrules and .cursor/rules/*.mdc from the working directory as project context, but only when no higher-priority file exists. The order is .hermes.md, then AGENTS.md, then CLAUDE.md, then Cursor rules, and only the first match is used. Since Cursor also reads AGENTS.md, that file is the simplest way to give both tools the same instructions.

Can I run Hermes inside Cursor as a chat panel?

Not through a documented path. Hermes supports the Agent Client Protocol (hermes acp), and its docs give setup steps for VS Code, Zed and JetBrains. Cursor is not on that list. The documented way to connect the two is MCP, where Cursor stays the agent and calls Hermes for messaging.

Does this work with a hosted Hermes bot on OpenClaw Launch?

Partly. hermes mcp serve is stdio-only, so Cursor can only attach to a Hermes install on the same machine, not to a bot running in our cloud. The practical split is Cursor on your laptop for code, and the hosted Hermes bot for the always-on side: chat platforms, memory and scheduled jobs.

Related guides

Run Hermes 24/7 without a server

OpenClaw Launch hosts Hermes Agent and OpenClaw with Telegram, Discord and more connected in minutes. Keep Cursor on your laptop for code; let the hosted bot handle the always-on part.

Deploy Managed Hermes