Claude Code permission settings

Resolved 💬 3 comments Opened Jan 19, 2026 by dcmcwhorter Closed Jan 22, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

From claude-code:

● Summary:

  • Both config files (/root/.claude/settings.json and /etc/claude-code/managed-settings.json) have correct permissions with single slashes
  • Claude Code's internal session permission handling is adding an extra / prefix, creating malformed patterns like //etc/...
  • This is a Claude Code bug, not a configuration issue we can fix
  • Cleared debug cache, informed Armsy

What Should Happen?

the app should not prepend slashes when they exist in the config file.

Error Messages/Logs

Steps to Reproduce

  1. Create /etc/claude-code/managed-settings.json with a Read permission:

{
"permissions": {
"allow": ["Read(/etc/**)"]
}
}

  1. Start a new Claude Code session from /root (or any directory)
  2. Ask Claude to read a file from /etc/, e.g.: "Read /etc/claude-code/CLAUDE.md"
  3. Expected: File is read without permission prompt (matches Read(/etc/**))
  4. Actual: Permission prompt appears for Read(/etc/claude-code/CLAUDE.md)
  5. If you approve, check debug logs in ~/.claude/debug/*.txt - the session permission is stored with double slash:

Applying permission update: Adding 1 allow rule(s) to destination 'session': ["Read(//etc/claude-code/**)"]

Environment:

  • Claude Code version: 2.0.76
  • OS: Linux (Ubuntu)
  • Platform: Debian-based server

Notes:

  • The config files contain correct single-slash paths
  • The double slash appears only in runtime session permissions
  • Suggests a path concatenation bug when building session permission rules

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.0.76

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

iTerm2

Additional Information

From claude-code:

  • Working directory matters? Session was running from /root when reading /etc/claude-code/CLAUDE.md - possible the path concatenation bug is related to CWD vs absolute path handling
  • Happens on first read - The permission prompt appeared on the very first attempt to read the file in a new session, not after any prior permission grants
  • Both settings files have the rule - The permission Read(/etc/**) exists in both user settings (~/.claude/settings.json) AND managed settings (/etc/claude-code/managed-settings.json), yet neither was matched
  • Glob pattern should match - /etc/** is a valid glob that should match /etc/claude-code/CLAUDE.md
  • Session runs via tmux - Claude Code is running in a persistent tmux session via systemd service, if that's relevant to path resolution

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗