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 /subgoal criteria 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

  1. Set a low-risk goal with an explicit verification command.
  2. Run /goal show and confirm all contract fields are accurate.
  3. Observe at least one continuation and inspect the judge's reason.
  4. Add a small subgoal and confirm it appears in the completion criteria.
  5. Test pause and resume controls.
  6. If a background job is involved, confirm the goal parks and resumes on its real signal.
  7. Verify the final evidence independently before accepting the achieved status.