# NousResearch/hermes-agent · File read/write access to sensitive credential paths

## Open now

- 3 issues, 5 PRs open on GitHub.
- #37617: security: agent/file_safety.py leaves inactive-profile credentials unprotected against prompt-injected writes
- #46411: Security: read_file can exfiltrate credential stores from sibling profiles
- #59044: Project-local .env/.envrc deliverable as native media (media denylist trails the read guard)
- PR #37624: fix(security): protect inactive-profile credentials from prompt-injected writes
- PR #37625: fix(file-safety): extend is_write_denied to cover inactive profile credentials
- PR #46417: fix(security): block read_file credential access across sibling profiles
- PR #59045: fix(security): deny project-local .env/.envrc in media delivery
- PR #68687: fix(agent): hard-deny still-protected stores under sibling profiles

These issues and fixes concern gaps in file safety controls that may allow reading or writing sensitive paths such as SSH keys, .env files, shell history, and sibling-profile credential stores. Multiple vectors are identified including read_file, media delivery, and write operations under inactive profiles.

## TL;DR

- 11 member(s): 3 open issue(s), 2 closed issue(s), 5 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_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.14`: 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

- #37617: security: agent/file_safety.py leaves inactive-profile credentials unprotected against prompt-injected writes
- #46411: Security: read_file can exfiltrate credential stores from sibling profiles
- #59044: Project-local .env/.envrc deliverable as native media (media denylist trails the read guard)

## Closed / duplicate issues

- #16809: read_file has no sensitive-path deny list — SSH keys, .env, shell history readable without restriction
- #20734: \[Security\]: get_read_block_error does not block project-local .env files, so read_file/ACP can read workspace secrets

## Prior & competing PRs

- **#16851: fix(file-safety): refuse read_file on credential paths (SSH keys, .env, …) (#16809)**. closed without merge · fix tier `suggested`
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `f0db5c997d2ecc97c8dd26f28b1f6f71f5f9b01f`, `#16809`
  - _suggested-tier fix detail withheld; re-request with `?tier=all` to include it._
- **#37624: fix(security): protect inactive-profile credentials from prompt-injected writes**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `agent/file_safety.py`, `tests/agent/test_file_safety_inactive_profiles.py`
- **#37625: fix(file-safety): extend is_write_denied to cover inactive profile credentials**. open
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#37624`, `#37624`
  - files: `agent/file_safety.py`, `tests/tools/test_write_deny.py`
- **#46417: fix(security): block read_file credential access across sibling profiles**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `agent/file_safety.py`, `tests/agent/test_file_safety_credentials.py`
- **#59045: fix(security): deny project-local .env/.envrc in media delivery**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`; refs `#99182`, `#99182`
  - files: `agent/file_safety.py`, `gateway/platforms/base.py`, `tests/gateway/test_media_delivery_project_env_guard.py`
- **#68687: fix(agent): hard-deny still-protected stores under sibling profiles**. open
  - maintainer direction: category `partial_fix`; implication `needs_llm`; refs `a77051a591b0`, `#37617`, `#37624`, `#37625`, `#68687`, `#37624`, `#68687`, `#37625`, `#37624`, `#68687`, `#68687`, `#37624`, `#37625`, `#68687`, `#68687`, `#37624`, `#37625`, `#68687`, `#68687`, `#374151`, `#37617`, `#68687`
  - files: `agent/file_safety.py`, `tests/agent/test_file_safety_inactive_profiles.py`

## Fix status

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