Hermes answers once and waits, pauses at 20 turns, or says the goal is blocked. Here's why each happens and how to keep it working until the task is done.
Checked against Hermes v0.22.5 on 27 October 2026.
Why Hermes stops: read the last line

Every stop leaves a message. Match yours:
| What you see | What it means | Fix |
|---|---|---|
| It answers once, then waits | Normal chat. Each message is one turn | Fix 1: use /goal |
| "⏸ Goal paused, 20/20 turns used" | The goal hit its turn budget | Fix 4: raise goals.max_turns or /goal resume |
| "🚫 Goal judged unachievable, paused" | The judge thinks the task can't be done as asked | Fix 3: re-scope the goal |
| "Goal paused, the judge model isn't returning the required JSON verdict" | Your judge model is broken, not your task | Fix 5: route the judge to another model |
| It just stops or times out mid-task | Provider errors, an idle timeout or the gateway | Fix 6 |
That fourth row is the one most guides miss. We'll come back to it, because we triggered it ourselves.
Fix 1: use /goal for tasks that should keep going

/goal gives Hermes a standing objective. After every turn, a lightweight judge model reads Hermes's last reply and returns one of four verdicts: done, continue, blocked or wait.
On "continue", Hermes feeds itself a continuation prompt in the same session and takes the next step. You don't type "keep going" at all.
/goal Update README sections Install, Config and Troubleshooting, then list each change
You'll see ⊙ Goal set (20-turn budget), then a line like ↻ Continuing toward goal (1/20): <the judge's reason> after each step, and finally ✓ Goal achieved when the judge agrees it's finished.
The controls you'll use most:
/goal status # current goal, status and turns used
/goal pause # stop the loop, keep the goal
/goal resume # restart the loop (also resets the turn counter)
/goal clear # drop the goal
Two details worth knowing. Any message you send jumps the queue, so you can steer mid-goal without pausing it. And goal state is saved with the session, so /resume tomorrow picks the goal up exactly where it stopped.
If you need agents that keep working when your laptop is closed, BetterClaw agents run on our servers, 24/7, so a sleeping laptop or a restarted terminal doesn't end the job. Start your first agent.
Fix 2: write a goal Hermes can finish

The judge only marks a goal done when the reply clearly confirms it. A vague goal gives it nothing to check, so it keeps saying "continue" until the budget runs out.
Compare these two:
- Vague:
/goal improve the docs - Finishable:
/goal Update README sections Install, Config and Troubleshooting, then list each change in your final message
The second one has an end state and evidence. The judge can see the three section names and the list.
For anything bigger, write a completion contract. Hermes reads these field names on separate lines:
/goal Migrate auth to JWT
verify: pytest tests/auth passes
constraints: keep the /login response shape unchanged
boundaries: only touch services/auth and its tests
stop when: a database schema change is needed
Don't want to write it yourself? /goal draft <one-line objective> asks a model to expand it into a full contract, shows it to you, and starts the goal.
Two more tools for tightening a running goal:
/subgoal <text>adds an extra criterion mid-loop without restarting it./goal gate add <command>adds a quality gate: a shell command, like your test suite, that must pass before the judge is even asked. A red gate is proof the job isn't done, so Hermes keeps working against the real failure output.
Fix 3: "goal blocked" and how to get past it

"Blocked" means the judge decided the goal can't be met as written: it's impossible, out of scope, or needs something from you. Hermes pauses instead of burning turns.
We pointed Hermes's goal loop at a test judge that always answered "blocked". This is exactly what came back:
🚫 Goal judged unachievable, paused: The task needs a GitHub token that is
not available in this environment. Re-scope with /goal set, or override with
/goal resume.
The reason after "paused" is the useful part. In practice, it's usually missing access: a token, a login, a file outside the folder Hermes can see.
You have two ways forward:
- Give Hermes what it's missing, or change the ask, then set it again with
/goal <new text>. - If you think the judge is wrong,
/goal resumeoverrides it.
Fix 4: it pauses at 20 turns
The default budget is 20 continuation turns. When it's used up, you see:
⏸ Goal paused, 20/20 turns used. Use /goal resume to keep going, or /goal clear to stop.
We set the budget to 3 in our test, and Hermes paused after exactly three "continue" verdicts with "3/3 turns used". So the counter does what it says.
Raise it in ~/.hermes/config.yaml:
goals:
max_turns: 40
The budget is your only brake on a judge that never says done. Each turn costs a full model call, so raise it in steps rather than setting 500. Many people keep 20 and type /goal resume, which resets the counter to zero, when a long job is clearly making progress.
Fix 5: your judge model is broken (the stop most guides miss)
Hermes's docs say judge errors "fail open": if the judge has a network blip, Hermes treats it as "continue". That's true, but only up to a point, and the code has two limits.
We tested both with a judge that misbehaved on purpose:
- A judge that replied in plain English instead of JSON: Hermes continued twice, then paused on the third turn with "the judge model (3 turns) isn't returning the required JSON verdict."
- A judge we switched off entirely: Hermes continued four times, then paused on the fifth with "judge API returned errors (5 turns). Check the goal_judge provider/key."
So if your goal keeps pausing with those lines, the task is fine. The judge is the problem. By default it uses your main model; small local models often can't produce strict JSON. Route it to a cheap, reliable model instead:
auxiliary:
goal_judge:
provider: openrouter
model: <a fast, cheap model>
The judge call is small (about 200 output tokens) and runs once per turn, so this barely changes your bill.
Fix 6: it stops mid-task or times out
If Hermes stops in the middle of a turn, not between turns, /goal isn't involved. The usual causes:
- The provider failed. Hermes retries an API call 3 times (
agent.api_max_retries), then waits and retries again up to 5 more cycles for outages like 5xx and 529 errors (agent.auto_recovery_cycles). After that, the turn ends. - The gateway idle timeout. On Telegram, Discord and other messaging platforms,
agent.gateway_timeoutcancels a run after 1,800 seconds of inactivity. It counts silence, not total time, so a busy agent isn't cut off. - The gateway restarted. A restart ends the current run. Check
hermes gateway status. - You capped iterations.
agent.max_turns(tool-calling steps inside one turn) is unlimited by default in current Hermes. If an old config sets it to a number, a long turn can end early. Remove it or raise it.
When it's waiting on something
Some goals depend on a slow process, like CI or a build. The judge can see Hermes's background processes and return "wait", which parks the loop without using turns until the process finishes. A wait on a process is capped at 30 minutes.
You can do it by hand too: /goal wait <pid> [reason] parks the loop, and /goal unwait releases it.
When to use cron instead of /goal

/goal is for finishing one job. Cron is for doing a job again and again.
- "Every morning, summarise my inbox" belongs in a cron job. Each run starts a fresh session.
- "Fix every failing test and confirm the suite passes" belongs in
/goal. It keeps working in one session until it's done.
If your scheduled jobs are the thing that keeps stopping, our guide to Hermes cron jobs not working covers all nine causes.
The takeaway
Hermes stopping is almost never random. It answered once because that's what chat does, it paused because a budget or a judge told it to, or a provider or timeout ended the turn.
Read the last line, match it to a fix, and give your goals a clear finish line. If you do, /goal will carry most jobs to the end on its own.
Always-on agents, 500+ apps and your own model key. Basic is $19 a month for one agent, Pro is $49 a month for five, and every plan has a 7-day free trial. Start your first agent.
Frequently Asked Questions
Why does Hermes stop after every reply? That's how chat works: Hermes answers a message and waits for the next one. For a task that should keep going without you, start it with /goal <outcome>. A judge model then checks each reply and continues until the goal is done, blocked or out of turns.
What does "goal blocked" mean in Hermes? The judge decided the goal can't be met as written, usually because something is missing, like a token, a login or access to a file. Hermes pauses with the reason. Fix what's missing and set the goal again, or override the judge with /goal resume.
How do I make Hermes keep going until a task is done? Use /goal with a clear end state, for example "update these three sections and list each change". For bigger jobs, add a verify: line or a quality gate with /goal gate add <test command> so "done" can be checked.
How do I change the Hermes /goal turn limit? Set goals.max_turns in ~/.hermes/config.yaml; the default is 20. You can also type /goal resume when it pauses, which resets the counter to zero.
Why does my Hermes agent keep timing out? Mid-turn stops usually come from provider errors after retries, the gateway's 1,800-second inactivity timeout on messaging platforms, or a gateway restart. If a goal pauses with a judge error instead, route the goal_judge to a model that returns clean JSON.




