# NousResearch/hermes-agent · Guard sensitive config keys from CLI mutation

## Open now

- 1 issue, 1 PR open on GitHub.
- #81101: \`config set\`: no sensitive-key guard — agent can flip \`approvals.mode\` (the security policy) via the official CLI with no gate
- PR #104697: fix(config): guard security-policy keys in hermes config set/unset (salvage of #81108)

These items address a missing security gate in the Hermes CLI that allows sensitive security-policy keys (such as approvals.mode) to be modified via \`config set\`/\`unset\` without restriction. The work involves adding guards to prevent unauthorized or unintended mutation of those keys.

## TL;DR

- 3 member(s): 1 open issue(s), 0 closed issue(s), 1 open PR(s), 0 merged PR(s), 1 PR(s) closed without merging.
- No fix has been merged to main; one or more PRs were attempted (see below).
- **Recommended:** review the prior/competing PR(s) below. A fix was attempted but not merged; your case may extend or revive that work.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.67`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Open related issues

- #81101: \`config set\`: no sensitive-key guard — agent can flip \`approvals.mode\` (the security policy) via the official CLI with no gate

## Prior & competing PRs

- **#81108: fix(config): guard security-policy keys in hermes config set/unset**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#104697`, `#59293`
- **#104697: fix(config): guard security-policy keys in hermes config set/unset (salvage of #81108)**. open
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `e5a84681f99b30f58bdbd5a40603b1939b674b2d`, `#59293`, `#81101`, `#104059`, `#113459`, `#49578`
  - files: `gateway/session_tui_config.py`, `gateway/slash_commands.py`, `hermes_cli/approval_mode.py`, `hermes_cli/cli_commands_mixin.py`, `hermes_cli/config.py`, `hermes_cli/config_policy.py`, `hermes_cli/subcommands/approvals.py`, `tests/gateway/test_approvals_command.py`, `tests/hermes_cli/conftest.py`, `tests/hermes_cli/test_approvals_command.py`, `tests/hermes_cli/test_config.py`, `tests/hermes_cli/test_config_set_coercion.py`, `tests/hermes_cli/test_config_set_list_values.py`, `tests/hermes_cli/test_console_engine_config_guard.py`, `tests/hermes_cli/test_set_config_value.py`, `tests/tools/test_approval.py`, `tests/tools/test_approval_config_set_policy.py`, `tests/tools/test_approval_detection_policy_gate.py`, `tests/tui_gateway/test_approvals_policy_chokepoint.py`, `tests/tui_gateway/test_config_set_policy_write.py` (+9 more)

## Fix status

- No merged fix on record.
- Subsystem: `hermes_cli`
