# NousResearch/hermes-agent · Docker chown symlink risk and targeted fix efforts

## Open now

- Nothing open on GitHub.

These issues and PRs concern a dangerous recursive chown in Docker entrypoint scripts that follows symlinks and can corrupt host filesystem ownership. Multiple fixes propose replacing or constraining the recursive chown with more targeted, symlink-aware approaches.

## TL;DR

- 6 member(s): 0 open issue(s), 2 closed issue(s), 0 open PR(s), 2 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #33033. Verify it addresses your case.
- **Recommended:** read PR #33033 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-33033,pr-52789`. 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.29`: 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.

## Closed / duplicate issues

- #19788: default entrypoint.sh recursively chown's to 10000:10000 - good thing I never ran it on my host root
- #52781: fix(docker): stage2-hook chown -R follows symlinks, can destroy user home directory

## Prior & competing PRs

- **#33033: fix(docker): targeted chown to preserve host file ownership in HERMES_HOME (#19795)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `docker/stage2-hook.sh`
- **#52789: fix(docker): skip symlinked stage2 chown targets**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `docker/stage2-hook.sh`, `tests/test_docker_home_override_scripts.py`, `tests/tools/test_stage2_hook_gateway_bootstrap_state.py`, `tests/tools/test_stage2_hook_seed_one_symlinks.py`, `tests/tools/test_stage2_hook_symlink_chown.py`, `tests/tools/test_stage2_hook_toplevel_chown.py`
- **#19795: fix(docker): replace recursive chown with targeted per-directory chown**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `9eadb6805`, `#33033`, `#19788`
- **#52793: fix: avoid recursive chown through symlinks**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#52789`, `#52781`, `#52789`

## Fix status

- Merged to main in PR #33033 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-06-26`.
- Subsystem: `environments`
