---
title: "Hermes Agent: setup, skills, memory and approvals"
description: "Set up Hermes Agent, try documented tasks and skills, compare licence and model costs, and check approvals, terminal backends and memory at a pinned revision."
url: https://personalagentbench.com/hermes-agent/
last_updated: 2026-10-12
---

# Hermes Agent: setup, skills, memory and approvals

Start with a working chat, then check the terminal backend, approval mode and memory files before adding unattended work. Hermes Agent is Nous Research's open-source agent with a Python CLI and messaging gateway, plus an Electron desktop application. This review combines practical steps from its pinned documentation with source findings about those execution and storage paths. [Getting-started commands](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/README.md#L107-L159).

- Run `hermes setup` to choose a provider and tools, then verify the model shown in the chat banner. [Setup sequence](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L37-L49).
- Use `/skills` to browse installed procedures and `/tools` to check the available tool surface. [Skills commands](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/README.md#L149-L158); [Tool listing](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L237-L245).
- Check approvals and the terminal backend as separate settings. The configuration and source checks below identify both.
- Inspect the active profile's memory files after asking Hermes to remember something. [Memory troubleshooting](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/memory.md#L67-L86).

## Set up Hermes Agent and verify a first task

Follow the pinned quickstart's installation route for your operating system, then run `hermes setup`. It documents a desktop installer for macOS and Windows, a shell installer for Linux/macOS/WSL2, and a PowerShell installer for native Windows. Reload the shell after a CLI installation so the `hermes` command is available. The installer links are distribution endpoints; the revision used for this review is recorded under Reproduce this. [Installation routes](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L53-L80).

The setup wizard offers Portal, Full Setup and Blank Slate paths. Full Setup walks through provider and tool choices. Blank Slate starts with a provider/model plus File Operations and Terminal, with features such as memory, skills and cron disabled. If you choose that path, enable a feature before trying its examples later in this page. Run `hermes model` to select or change the provider and model, and `hermes tools` to configure tools. [Setup modes](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L100-L107); [CLI setup commands](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/README.md#L107-L120).

Start `hermes` or `hermes --tui` and ask it to summarize the repository in five bullets and identify the main entrypoint. This task comes from the quickstart. Check the answer against the files it names: the exercise makes both file access and the resulting explanation easy to inspect. The documented success checks are a banner showing the chosen provider/model, a reply without error, a working tool when needed and a conversation that continues for more than one turn. [First-chat example and checks](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L182-L212).

Next, exit and use `hermes --continue` to resume the latest session. If it does not return to the expected conversation, check that you selected the same profile. Once the CLI works, `hermes gateway setup` adds a messaging platform. This sequence gives you a working local conversation to compare with the gateway when diagnosing configuration problems. [Resume check](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L216-L225); [Gateway setup order](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L41-L49).

## Choose Hermes Agent models and separate licence from running cost

Use `hermes model` to select the provider you intend to pay or host. The repository is [MIT licensed](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/LICENSE#L1-L15): the software licence does not require buying a Hermes licence to run or modify it under those terms. Model inference is a separate service or computing cost. The pinned quickstart describes subscription routes, API-key routes including pay-per-token access, and custom endpoints for local or self-hosted models. [Provider choices](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L110-L158).

The example configuration names `anthropic/claude-opus-4.6`; treat that as an example and verify your selection in the banner. A custom endpoint also needs the correct base URL, model name and context length. The quickstart specifies at least 64,000 tokens of context for the model. [Example model](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/cli-config.yaml.example#L72-L90); [Custom endpoint and context requirement](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L153-L158).

Account for hosted tools as well as model calls. The README describes an optional Nous Portal subscription that routes model access and tools such as web search, image generation, speech and a cloud browser through its Tool Gateway. It also permits bringing your own per-tool keys. Check which route you configured before estimating spend; this review has no measured workload cost or current price quote. The documented `/usage` and `/insights` commands provide usage views once you run your own tasks. [Service choices and usage commands](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/README.md#L126-L158).

## Use Hermes Agent skills for repeatable tasks

Browse `/skills`, then inspect a relevant installed skill before invoking it. Skills are on-demand knowledge documents, stored by default under `~/.hermes/skills/`; they supply procedures the agent can load when needed. Tools supply the callable operations used to carry out those procedures. Choosing a skill therefore goes alongside checking `/tools` and configuring the necessary integrations. [Skill storage and loading](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/skills.md#L9-L18); [Available tools](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L237-L245).

The pinned skills guide includes examples for finding cat GIFs with `gif-search`, preparing a pull request for an authentication refactor with `github-pr-workflow`, analyzing a mix with `songsee`, and opening `excalidraw` without arguments so the agent can ask what you need. These are documented task examples, not completed benchmark runs. Invoke the corresponding slash command only after that skill is installed and its required tools are configured. [Skill invocation examples](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/skills.md#L73-L86).

Check skill seeding if you used Blank Slate or a named profile. The guide documents `hermes skills opt-out` to stop future bundled-skill seeding without removing existing files, and `hermes skills opt-in --sync` to restore seeding immediately. This distinction helps explain why an existing skill may remain visible after opting out, or why a fresh profile has a different catalogue. [Profile skill controls](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/skills.md#L43-L70).

For another concrete terminal task, the quickstart suggests asking for disk usage and the five largest directories. Review the reported paths and results in the context of the terminal backend selected below. A directory report from a remote environment answers a different question from the same task run on your laptop. [Disk-usage example](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L227-L235); [Terminal configuration](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/cli-config.yaml.example#L422-L443).

## Check Hermes Agent approval mode before unattended work

Inspect `approvals.mode` in the active `config.yaml`, then check how the session was launched. The pinned security guide documents `smart`, `manual` and `off`. Smart mode uses an auxiliary model to assess dangerous-command risk, auto-approving low-risk cases, denying dangerous ones and escalating uncertain cases. Manual mode asks the user for dangerous commands. Off selects the approval bypass. [Approval modes](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/security.md#L28-L62).

Also inspect `--yolo`, the `HERMES_YOLO_MODE` environment variable and the session's YOLO indicator. The documented `/yolo` command toggles the state, so do not use it as a read-only status query. The source combines process, session and mode-off bypass inputs; checking the YAML value alone can miss a session override. These findings concern the inspected approval paths, not universal coverage of sending, buying or deleting through every integration. [YOLO controls and indicators](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/security.md#L65-L91); [Bypass resolution](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/tools/approval.py#L481-L492).

Before adding cron or an API workflow, review `approvals.cron_mode`, `single_query_mode` and `unattended_mode`. The guide documents `deny` defaults when a dangerous-command prompt cannot be answered in those contexts, with `approve` alternatives. It also distinguishes API clients that can answer approval cards. Match the setting to the actual entry point instead of assuming a successful interactive prompt predicts unattended behavior. [Headless approval settings](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/security.md#L30-L53).

## Check Hermes Agent terminal and desktop boundaries

Read `terminal.backend` and `terminal.cwd` in your configuration. The example selects `local`, and the terminal implementation falls back to local execution. With that backend, commands run on the machine hosting the process. The example documents alternatives including SSH, Docker, Singularity, Modal and Daytona; inspect the selected backend's settings before deciding which filesystem a task should see. [Terminal backend examples](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/cli-config.yaml.example#L415-L528); [Backend fallback](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/tools/terminal_tool.py#L425-L438).

The quickstart supplies `hermes config set terminal.backend docker` as a configuration example. Use the backend documentation to complete its setup, then apply the documented directory-inspection task to verify the environment you selected. Merely changing a value is not a runtime containment test. [Configuration and directory check](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L165-L200).

Keep the desktop boundary separate. Its chat window enables context isolation and renderer sandboxing and disables Node integration, while the preload exposes application operations through IPC. Those renderer settings do not confine Python terminal commands. REA mapped this JavaScript boundary; terminal behavior was established by manual source reading. [Renderer preferences](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/apps/desktop/electron/session-windows.ts#L49-L56); [Preload API](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/apps/desktop/electron/preload.ts#L28-L59).

## Inspect Hermes Agent memory and provider connections

After asking Hermes to save a fact, open `~/.hermes/memories/MEMORY.md` and `USER.md` and check that it was written. The official troubleshooting guide emphasizes that a conversational promise to remember is insufficient: the memory tool must actually write the entry. For a named profile, inspect that profile's `memories` directory instead; `hermes profile list` helps identify the available profiles. [Memory verification](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/memory.md#L67-L86).

If the entry is missing, check whether memory is enabled and whether write approval has staged it. The guide documents `/memory pending` for staged writes. If the file contains the fact but an existing conversation does not use it, start a new session with `/new`: the system-prompt memory snapshot is captured at session start, while tool responses show live state. These checks distinguish a failed save, a different profile and an old snapshot. Complete deletion of session records and backups is outside this review. [Snapshot and troubleshooting checks](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/user-guide/features/memory.md#L57-L86).

Review provider and terminal configuration alongside memory when assessing where data can go. Secrets normally live in `~/.hermes/.env`, while ordinary settings live in `~/.hermes/config.yaml`. Custom providers and tools can add endpoints; an exhaustive outbound-host list and a telemetry default are not established here. REA's [relative gateway request](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/apps/desktop/electron/gateway-version.ts#L6-L6) locates a JavaScript request site, not a captured connection. [Configuration storage](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/website/docs/getting-started/quickstart.md#L165-L180); [Backend configuration](https://github.com/NousResearch/hermes-agent/blob/0b89435e7e4f7fab88a34eb69f13bf339eb2fd00/tools/terminal_tool.py#L425-L438).

Use the [15-agent comparison](https://personalagentbench.com/open-source-personal-agents/) to compare these settings with other projects, and the [OpenClaw security review](https://personalagentbench.com/openclaw-security/) for its effective-policy inspection commands.

## Reproduce this

Use the pinned revision and recorded commands below to trace the findings.

We read these with REA (morluto/rea, MIT, v6.4.0), an open-source reverse-engineering tool for agents, plus manual source reading. [REA's repository](https://github.com/morluto/rea) supplies the tool; it does not endorse this review. We are not affiliated with this project or REA. This is static reading only: no target agent was executed and no live traffic was observed.

The pinned checkout is `0b89435e7e4f7fab88a34eb69f13bf339eb2fd00`. REA mapped the JS/TS application graph (Electron boundaries, imports, storage, request call sites); behavioural conclusions (approval paths, defaults, telemetry) were confirmed by reading the source. Electron boundaries were mapped where present. REA did not establish non-JavaScript core behavior.

These are portable equivalents of the commands recorded in the pass-2 manifest, run from a working directory that holds the pinned repository at `repos/hermes-agent`. Clone the repository at the pinned commit into `repos/`, create `rea-out/`, and run the commands from that directory. These are analysis commands, not instructions to start the agent. Executable and workspace paths are normalised to `npx rea-agents@6.4.0` and relative paths; some original runs also set a writable compiler-cache directory through `ADDITIONAL_SWIFT_DRIVER_FLAGS`.

`npx rea-agents@6.4.0 inspect repos/hermes-agent --format json > rea-out/hermes-agent-inspect.json 2> rea-out/hermes-agent-inspect.stderr`

`npx rea-agents@6.4.0 analyze-javascript-application repos/hermes-agent --format json --analysis-timeout-ms 120000 > rea-out/hermes-agent.json 2> rea-out/hermes-agent.stderr`

`npx rea-agents@6.4.0 analyze-javascript-application repos/hermes-agent --format json --analysis-timeout-ms 120000 > rea-out/hermes-agent-analysis.json 2> rea-out/hermes-agent-analysis.stderr`

The retained analysis is partial. A writable compiler cache resolved the initial parsing setup failure, but blocked process-table inspection produced `cleanup_incomplete`. The runner stopped lingering CLIs after complete JSON output; that does not establish clean worker shutdown. Missing graph observations cannot establish absent behavior. The [reproduction record](https://personalagentbench.com/rea/pass2-reproduction.json) records output hashes separately from Evidence IDs and subject digests.

## FAQ

**What should I try first with Hermes Agent?** Use the repository-summary task in the setup section, check its entrypoint answer against the files, and continue the conversation. Then test session resume before adding a messaging gateway.

**How do I choose between skills and memory?** Use a skill for a repeatable procedure and curated memory for facts or preferences needed across conversations. The skills and memory sections show where to inspect each one.

**Is the MIT licence the same as free model usage?** No. The licence covers the software. Your chosen provider, subscription and optional hosted tools determine service charges; the model and cost section explains the documented choices.

**Where should I look if approvals seem wrong?** Start with `approvals.mode`, the launch flags and the current session's YOLO indicator. Check the unattended settings separately when the task comes from cron or an API.

---

Published by Personal Agent Bench (https://personalagentbench.com), run by the Zentor team. Zentor builds agent software of its own, so its products are not on the scorecard and will not be added.
