Persistent Goals with Completion Contracts
The /goal command gives Hermes a standing objective that can continue across turns without repeated “keep going” prompts. A lightweight judge checks the latest result and either stops, continues, or waits on real background work.
Official documentation: https://hermes-agent.nousresearch.com/docs/user-guide/features/goals
When a goal fits
Use a persistent goal for a bounded mission that needs several inspect-act-test cycles: resolving a test suite, completing a migration, producing a verified artifact, or investigating a difficult failure. A one-turn question does not need a goal, and an ambiguous business objective should not be automated until its boundaries are clear.
Write a completion contract
A strong goal names five things:
- Outcome: the end state that must be true.
- Verification: the command, route, file, or artifact that proves it.
- Constraints: behavior that must not regress.
- Boundaries: files, systems, and tools that are in scope.
- Stop condition: the decision or risk that requires a person.
Use /goal draft to turn a plain objective into a reviewable contract, or write the fields directly. Use /goal show to inspect the active contract before letting the loop continue.
Goal-control checklist
- Make verification objective and reproducible.
- Set a stop condition for credentials, payments, destructive changes, and product choices.
- Keep the turn budget finite.
- Add
/subgoalcriteria when new acceptance requirements appear. - Park on a tracked background process instead of burning turns while waiting.
- Pause the loop when observations contradict the plan.
- Preserve user messages as higher-priority steering.
- Clear the goal after the mission is complete or abandoned.
Pitfalls
- Writing “make it better” and expecting a reliable completion verdict.
- Treating the judge as proof when no test or artifact was produced.
- Letting a goal repeatedly poll a build that already has a tracked completion signal.
- Adding scope silently instead of recording a subgoal.
- Resuming indefinitely after the turn budget reveals a blocked plan.
- Using a goal to bypass human approval boundaries.
Verification steps
- Set a low-risk goal with an explicit verification command.
- Run
/goal showand confirm all contract fields are accurate. - Observe at least one continuation and inspect the judge's reason.
- Add a small subgoal and confirm it appears in the completion criteria.
- Test pause and resume controls.
- If a background job is involved, confirm the goal parks and resumes on its real signal.
- Verify the final evidence independently before accepting the achieved status.
