42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
---
|
||
title: Tool Calling
|
||
type: concept
|
||
status: active
|
||
created: 2026-07-22
|
||
updated: 2026-07-22
|
||
verified_on: 2026-07-22
|
||
confidence: high
|
||
tags: [concept, tool-calling]
|
||
sources: [raw/configs/hermes-config-sanitized.txt]
|
||
---
|
||
|
||
# Tool Calling
|
||
|
||
## Idea
|
||
How Hermes decides to invoke a tool, and — more specifically for this page — how it detects and stops itself when tool use goes wrong (loops, repeated failures).
|
||
|
||
## How this install implements guardrails
|
||
**Verified (`~/.hermes/config.yaml`, `tool_loop_guardrails:`):**
|
||
```
|
||
warnings_enabled: true
|
||
hard_stop_enabled: false
|
||
warn_after:
|
||
exact_failure: 2
|
||
same_tool_failure: 3
|
||
idempotent_no_progress: 2
|
||
hard_stop_after:
|
||
exact_failure: 5
|
||
same_tool_failure: 8
|
||
idempotent_no_progress: 5
|
||
```
|
||
- Warnings trigger well before any hard stop (2–3 repeats vs 5–8).
|
||
- **`hard_stop_enabled: false`** — Hermes will *warn* about a stuck tool loop but will not currently force-stop itself. That's a deliberate-looking but consequential setting: a genuinely stuck loop only gets a warning, not an automatic halt.
|
||
|
||
## Why it matters here
|
||
This is the mechanism behind [[runbooks/troubleshoot-tool-loop]] — that runbook's "agent loops on one tool" symptom is exactly what `warn_after`/`hard_stop_after` are meant to catch. With hard-stop disabled, a human (or the messaging integrations) is the actual backstop today.
|
||
|
||
## Related
|
||
- [[concepts/persistent-shells]]
|
||
- [[runbooks/troubleshoot-tool-loop]]
|
||
- [[systems/hermes-agent]]
|