Skip to content

fix(security): enable secret redaction by default#18596

Open
liuhao1024 wants to merge 1 commit into
NousResearch:mainfrom
liuhao1024:fix/issue-17691-redact-secrets-default-on
Open

fix(security): enable secret redaction by default#18596
liuhao1024 wants to merge 1 commit into
NousResearch:mainfrom
liuhao1024:fix/issue-17691-redact-secrets-default-on

Conversation

@liuhao1024
Copy link
Copy Markdown
Contributor

Summary

Change HERMES_REDACT_SECRETS default from OFF to ON to prevent accidental credential leaks in gateway chat output and session logs.

Problem: In a vanilla Hermes deployment, HERMES_REDACT_SECRETS is OFF by default. When users converse through the gateway (Telegram, Discord), the agent routinely echoes back live API key values in chat responses and writes them verbatim into session JSON files. A production audit found 24 distinct credentials leaked across 345 session files.

Fix: Change the default in two locations:

  • agent/redact.py: os.getenv("HERMES_REDACT_SECRETS", "true") instead of ""
  • hermes_cli/config.py: "redact_secrets": True instead of False

Backward compatibility: Users who need unredacted output can opt out via:

  • security.redact_secrets: false in config.yaml
  • HERMES_REDACT_SECRETS=false in ~/.hermes/.env

Test Plan

  • Updated test_redact_secrets_default_true_when_unset to verify new default
  • test_redact_secrets_false_in_config_yaml_is_honored — explicit false still works
  • test_redact_secrets_true_in_config_yaml_is_honored — explicit true still works
  • test_dotenv_redact_secrets_beats_config_yaml — .env precedence preserved
  • All 75 tests/agent/test_redact.py tests pass
  • All 93 tests/hermes_cli/test_config*.py tests pass

Closes #17691

Change HERMES_REDACT_SECRETS default from OFF to ON to prevent
accidental credential leaks in gateway chat output and session logs.

Without this fix, a vanilla Hermes deployment echoes back live API key
values in Telegram/Discord chat and writes them verbatim into session
JSON files. Users who need unredacted output can opt out via
security.redact_secrets: false in config.yaml.

Closes NousResearch#17691
@alt-glitch alt-glitch added type/security Security vulnerability or hardening P1 High — major feature broken, no workaround comp/agent Core agent loop, run_agent.py, prompt builder area/config Config system, migrations, profiles labels May 2, 2026
Cyrene963 pushed a commit to Cyrene963/hermes-agent that referenced this pull request May 3, 2026
Community PRs applied:
- NousResearch#18596: Enable secret redaction by default (SECURITY)
- NousResearch#18650: Sanitize malformed tool messages + auto-recover on API 400
- NousResearch#18607: Emergency compression before max_iterations exhaustion
- NousResearch#18603: Compression fallback to main model on 413 rate limit
- NousResearch#18638: Pass threshold_percent on model switch
- NousResearch#18663: Strip extra_content from tool_calls for strict APIs
- NousResearch#18618: Forward explicit_api_key to OpenRouter
- NousResearch#18632: Show cache tokens in /insights breakdown
- NousResearch#18614: Add idempotency guard for patch duplicate loops
- NousResearch#18600: Raise ValueError when HERMES_HOME unset in profile mode
- NousResearch#18616: Allow ZWJ emoji in context files
- NousResearch#18582: Reload .env on /restart
- NousResearch#18547: Stabilize system prompt prefix for KV cache reuse
- NousResearch#18692: Strip FTS5 operators from session search truncation terms

Fix: Add order_by_last_active=True to list_sessions_rich call
(pre-existing commit 142b4bf code sync)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/agent Core agent loop, run_agent.py, prompt builder P1 High — major feature broken, no workaround type/security Security vulnerability or hardening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Security: HERMES_REDACT_SECRETS off-by-default exposes API keys in user-visible Telegram/Discord chat output

2 participants