pingdotgg / pingdotgg/t3code

[Bug]: Codex shadow home symlinks unclassified auth-like entries

Open
#8,578 0 comments 0 reactions 0 assignees View on GitHub

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:

  1. Create disposable shared and shadow Codex homes
  2. Add mode-0600 fixtures auth-fixture-a.json, auth_fixture_b.json, and auth.json.bak to the shared home
  3. Add a mode-0600 auth.json fixture to the shadow home
  4. Run resolveCodexHomeLayout and materializeCodexShadowHome
  5. Inspect file types and targets with lstat and readlink

Actual result:

  1. The three shared auth-like fixtures become shadow-home symlinks
  2. The shadow's exact auth.json remains private

Expected result:

  1. Credential-like entries remain private to their owning home
  2. They are never linked into another shadow home
  3. Existing credential-like shadow symlinks fail closed

Suggested correction:

  1. Match names beginning with auth followed by end-of-name, dot, underscore, or hyphen
  2. Apply the predicate case-insensitively
  3. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.