You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
chore: .claude/settings.local.json is tracked in git — personal local settings with machine-specific paths and a broad home-read allow #370
.claude/settings.local.json is tracked in git. By name and by Claude Code convention it is the local (personal, per-machine) settings file — the shared project file is settings.json. This is the only file under .claude/ in the repo, and .gitignore does not cover it (git check-ignore .claude/settings.local.json reports NOT-IGNORED; verified on main 2b0c539b).
Evidence (main 2b0c539b)
git ls-files .claude/ returns exactly one file: .claude/settings.local.json (917 bytes).
Its contents are one machine's personal permission allowlist, e.g.:
Read(//home/user/**) — a blanket read of another home directory
One-off Bash(...) allows naming files from a different checkout layout (home/common/default.nix, nixos/services/cloudflared/default.nix)
.gitignore ignores the analogous local override .env.local (line 104) but has no entry for .claude/settings.local.json.
Every clone therefore inherits a personal allowlist that (a) does nothing useful on any other machine (the /home/user/... paths are not this repo's layout), and (b) normalizes committing local agent settings — the next person's settings.local.json may carry broader or more sensitive allows.
Why it matters
Local settings files are the agent-tooling equivalent of .env.local: personal, machine-specific, and a standing invitation to leak local paths/permissions into a shared repo. The repo already untracked the same class of artifact in .opencode/ (#367, filed-only) and pkgs/launcher's binary (#353); this is the remaining *.local.* settings file still tracked.
Acceptance criteria
.claude/settings.local.json is no longer tracked (git ls-files .claude/ is empty, or only a deliberate shared settings.json remains).
.gitignore gains .claude/settings.local.json so it cannot be re-committed accidentally (git check-ignore matches).
If any of the allows are genuinely meant to be shared project permissions, they are moved to a new .claude/settings.json with repo-relative paths instead of /home/user/... absolutes; otherwise no replacement is needed.
No other file changes; the local file may remain on disk for its owner (untrack, do not necessarily delete content from history — history rewrite is out of scope).
Suggested fix
git rm --cached .claude/settings.local.json (or delete in the PR if the content is not needed) plus one .gitignore line — a small, low-risk change in the same class as #353/#355/#363.
Activity