mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-29 06:31:32 +00:00
fix: avoid persisting borrowed credential secrets (#31416)
This commit is contained in:
parent
2b768535c9
commit
d7c5d5dee5
6 changed files with 590 additions and 27 deletions
|
|
@ -179,6 +179,8 @@ Hermes automatically discovers credentials from multiple sources and seeds the p
|
|||
|
||||
Auto-seeded entries are updated on each pool load — if you remove an env var, its pool entry is automatically pruned. Manual entries (added via `hermes auth add`) are never auto-pruned.
|
||||
|
||||
Borrowed runtime secrets (for example env vars, Bitwarden/Vault/keyring/systemd references, and custom config values) are reference-only at the `auth.json` boundary. Hermes can use the resolved value in memory for the current run, but it persists only metadata such as the source ref, label, status, request counters, and a non-reversible fingerprint. Manual entries and Hermes-owned OAuth/device-code state keep the durable tokens they need to refresh.
|
||||
|
||||
## Delegation & Subagent Sharing
|
||||
|
||||
When the agent spawns subagents via `delegate_task`, the parent's credential pool is automatically shared with children:
|
||||
|
|
@ -219,15 +221,28 @@ Pool state is stored in `~/.hermes/auth.json` under the `credential_pool` key:
|
|||
"auth_type": "api_key",
|
||||
"priority": 0,
|
||||
"source": "env:OPENROUTER_API_KEY",
|
||||
"access_token": "sk-or-v1-...",
|
||||
"secret_source": "bitwarden",
|
||||
"secret_fingerprint": "sha256:12ab34cd56ef7890",
|
||||
"last_status": "ok",
|
||||
"request_count": 142
|
||||
}
|
||||
],
|
||||
"anthropic": [
|
||||
{
|
||||
"id": "manual1",
|
||||
"label": "personal-api-key",
|
||||
"auth_type": "api_key",
|
||||
"priority": 0,
|
||||
"source": "manual",
|
||||
"access_token": "sk-ant-api03-..."
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The OpenRouter entry above was borrowed from an external source, so the raw key is not stored in `auth.json`. The manual Anthropic entry was intentionally added to Hermes' credential store, so its token remains persistable.
|
||||
|
||||
Strategies are stored in `config.yaml` (not `auth.json`):
|
||||
|
||||
```yaml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue