Skip to content

Committed .claude/settings.json exposes developer local filesystem path and inherits overbroad Bash permissions to cloners #11

Description

@tg12

Summary

.claude/settings.json has been committed to the public repository and contains the developer's local filesystem path (/Users/maximus/Desktop/INTELMAP/server/src/Data). Additionally, client/.env has been committed to the repository root, even though the server-side .gitignore is present.

Evidence

.claude/settings.json (committed, publicly visible):

{
  "permissions": {
    "allow": [
      "WebFetch(domain:gpsjam.org)",
      "Bash(npm install h3-js)",
      "Bash(npm run build)",
      "Bash(npm run lint)",
      "Bash(git add .)",
      "Bash(git push)",
      "Bash(gh api:*)",
      "Bash(pip3 install:*)",
      "Bash(git stash:*)",
      "Bash(git reset:*)",
      "Bash(git add:*)"
    ],
    "additionalDirectories": ["/Users/maximus/Desktop/INTELMAP/server/src/Data"]
  }
}

client/.env (committed):

VITE_FLIGHT_PROVIDER=opensky

The additionalDirectories path reveals:

  • The developer's username (maximus)
  • The original project name (INTELMAP), which may differ from the published radar name
  • Local filesystem layout

The allowed Bash permissions (git push, git reset:*, git stash:*, gh api:*) are overbroad and indicate this was configured during active development with AI assistance. Any developer who clones this repository and opens it with Claude Code will inherit these permissions.

Why this matters

  1. Local path disclosure: The additionalDirectories path is an internal filesystem path that was never intended for public disclosure. It confirms the developer's username, project structure, and local environment.
  2. Inherited permissions: Claude Code reads .claude/settings.json from the repository root. Developers who clone this repo inherit the allow-list, including Bash(git reset:*) which can silently discard uncommitted changes and Bash(git push) which auto-approves push operations.
  3. .env in tracking: client/.env currently only contains a non-secret setting, but it establishes the pattern of committing .env files. Future secrets added to this file would be committed automatically.

Root cause

.claude/ directory and client/.env were not added to .gitignore. Both are developer-local artifacts with no place in a public repository.

Recommended fix

  1. Remove both files from tracking:
    git rm --cached .claude/settings.json client/.env
  2. Add to root .gitignore:
    .claude/settings.json
    client/.env
    client/.env.local
    
  3. Rotate any credentials that may have passed through this environment.

Acceptance criteria

  • .claude/settings.json and client/.env removed from git tracking
  • .gitignore prevents future commits of these files
  • No local filesystem paths or developer usernames in any committed file

Suggested labels

security, devops

Priority

P2

Severity

Medium — developer local path disclosure and inherited overbroad AI coding assistant permissions for repo cloners.

Confidence

Confirmed — both files directly observed in repository.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions