[Bug]: Codex shadow home symlinks unclassified auth-like entries
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Area: apps/server
Version: current main at 45c0dff8ec33a023c79ccb4e06494309253d1c25
Codex shadow-home materialization treats only exact auth.json and models_cache.json as private. Other shared-home entries are symlinked into the shadow home, including auth-like filenames
Reproduction:
- Create disposable shared and shadow Codex homes
- Add mode-0600 fixtures auth-fixture-a.json, auth_fixture_b.json, and auth.json.bak to the shared home
- Add a mode-0600 auth.json fixture to the shadow home
- Run resolveCodexHomeLayout and materializeCodexShadowHome
- Inspect file types and targets with lstat and readlink
Actual result:
- The three shared auth-like fixtures become shadow-home symlinks
- The shadow's exact auth.json remains private
Expected result:
- Credential-like entries remain private to their owning home
- They are never linked into another shadow home
- Existing credential-like shadow symlinks fail closed
Suggested correction:
- Match names beginning with auth followed by end-of-name, dot, underscore, or hyphen
- Apply the predicate case-insensitively
- Keep author.json and normal session, config, skill, and cache entries shared
This establishes filesystem topology only. It does not claim Codex reads those files, uses their contents, or corrupts authentication
Fixtures only. No real credential file was read, hashed, copied, moved, renamed, or logged
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in apps/server at resolveCodexHomeLayout and materializeCodexShadowHome, then reproduce the issue with the disposable shared and shadow homes and the listed fixtures. Inspect file types and targets with lstat and readlink. Done means auth-like names are kept private case-insensitively, existing credential-like shadow symlinks fail closed, and author.json plus normal session, config, skill, and cache entries remain shared.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, security
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100