claude-code - 💡(How to fix) Fix [BUG] Claude Code permission bypass using @../ attachment syntax outside workspace boundary [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

<html> <body> <!--StartFragment--><h1><span>Summary</span></h1><p class="isSelectedEnd"><span>Claude Code's permission system (</span><code dir="ltr"><span>permissions.deny</span></code><span>) can be bypassed using the </span><code dir="ltr"><span>@../</span></code><span> attachment syntax when referencing files outside the current workspace root.</span></p><p class="isSelectedEnd"><span>The same file is correctly blocked when accessed through:</span></p><ul data-spread="false"><li><span>standard </span><code dir="ltr"><span>Read</span></code><span> tool usage</span></li><li><span>absolute path reads</span></li><li><span>workspace-local </span><code dir="ltr"><span>@file</span></code><span> attachment syntax</span></li></ul><p class="isSelectedEnd"><span>However, the file becomes readable when referenced using relative parent traversal attachment syntax:</span></p><pre dir="ltr"><code dir="ltr"><span>@../path/to/file</span></code></pre><p class="isSelectedEnd"><span>This allows sensitive files located outside the active workspace root to be injected directly into the model context despite explicit deny rules.</span></p><p class="isSelectedEnd"><span>The issue appears to originate from a separate attachment preprocessing pipeline that bypasses the standard permission enforcement layer.</span></p><div contenteditable="false"><hr></div><h1><span>Affected Product</span></h1><pre dir="ltr"><code dir="ltr"><span>Claude Code</span></code></pre><div contenteditable="false"><hr></div><h1><span>Affected Version</span></h1><pre dir="ltr"><code dir="ltr"><span>Claude Code v2.1.146</span></code></pre><p class="isSelectedEnd"><span>Observed on:</span></p><pre dir="ltr"><code dir="ltr"><span>Windows</span></code></pre><div contenteditable="false"><hr></div><h1><span>Severity</span></h1><p class="isSelectedEnd"><span>Suggested severity:</span></p><pre dir="ltr"><code dir="ltr"><span>Medium to High</span></code></pre><p class="isSelectedEnd"><span>Reasoning:</span></p><ul data-spread="false"><li><span>explicit security policy bypass</span></li><li><span>exposure of sensitive files outside workspace boundary</span></li><li><span>inconsistent policy enforcement behavior</span></li><li><span>low user visibility</span></li><li><span>easy exploitation</span></li><li><span>false sense of security for users relying on deny rules</span></li></ul><div contenteditable="false"><hr></div><h1><span>Security Impact</span></h1><p class="isSelectedEnd"><span>This issue allows access to sensitive files that users explicitly intended to block using Claude Code's permission system.</span></p><p class="isSelectedEnd"><span>Potentially exposed data includes:</span></p><ul data-spread="false"><li><span>API keys</span></li><li><span>SSH keys</span></li><li><span>certificates</span></li><li><code dir="ltr"><span>.env</span></code><span> files</span></li><li><span>proprietary source code</span></li><li><span>authentication tokens</span></li><li><span>internal security implementations</span></li><li><span>private repositories adjacent to the active workspace</span></li></ul><p class="isSelectedEnd"><span>The vulnerability is especially concerning because:</span></p><ul data-spread="false"><li><code dir="ltr"><span>permissions.deny</span></code><span> appears to function correctly in normal cases</span></li><li><span>PreToolUse hooks also appear functional</span></li><li><span>only specific attachment traversal syntax bypasses enforcement</span></li></ul><p class="isSelectedEnd"><span>This may lead users to incorrectly assume their sensitive directories are protected.</span></p><div contenteditable="false"><hr></div><h1><span>Environment</span></h1><p class="isSelectedEnd"><span>Operating system:</span></p><pre dir="ltr"><code dir="ltr"><span>Windows</span></code></pre><p class="isSelectedEnd"><span>Claude session root (workspace root):</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library.Devices</span></code></pre><div contenteditable="false"><hr></div><h1><span>Workspace Layout</span></h1><pre dir="ltr"><code dir="ltr"><span>D:\TestProject ├── Library │ └── Security │ └── KeyIV.cs └── Library.Devices</span></code></pre><p class="isSelectedEnd"><span>Target sensitive file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Important detail:</span></p><ul data-spread="false"><li><code dir="ltr"><span>Library.Devices</span></code><span> is the active Claude workspace</span></li><li><code dir="ltr"><span>Library\Security</span></code><span> is OUTSIDE the active workspace root</span></li><li><span>access is achieved using parent directory traversal (</span><code dir="ltr"><span>../</span></code><span>)</span></li></ul><div contenteditable="false"><hr></div><h1><span>Permission Configuration</span></h1><p class="isSelectedEnd"><span>File:</span></p><pre dir="ltr"><code dir="ltr"><span>~/.claude/settings.json</span></code></pre><p class="isSelectedEnd"><span>Configuration:</span></p><pre dir="ltr"><code dir="ltr"><span>{ "permissions": { "deny": <span data-placeholder-token="true" class="text-token-text-primary cursor-text rounded-sm">[ "Read(**/Security/**)" ]</span> } }</span></code></pre><p class="isSelectedEnd"><span>This rule correctly blocks direct reads to files inside any </span><code dir="ltr"><span>Security</span></code><span> directory.</span></p><div contenteditable="false"><hr></div><h1><span>Expected Behavior</span></h1><p class="isSelectedEnd"><span>Any attempt to access:</span></p><pre dir="ltr"><code dir="ltr"><span>../Library/Security/KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>should be blocked consistently regardless of access syntax.</span></p><p class="isSelectedEnd"><span>The following access methods should all be denied equally:</span></p><ul data-spread="false"><li><span>direct </span><code dir="ltr"><span>Read</span></code></li><li><span>absolute paths</span></li><li><code dir="ltr"><span>@file</span></code></li><li><code dir="ltr"><span>@../file</span></code></li><li><span>attachment syntax</span></li><li><span>relative paths</span></li></ul><p class="isSelectedEnd"><span>Permission enforcement should occur AFTER path normalization and BEFORE any file content is injected into model context.</span></p><div contenteditable="false"><hr></div><h1><span>Actual Behavior</span></h1><p class="isSelectedEnd"><span>The behavior is inconsistent depending on how the file is referenced.</span></p><div contenteditable="false"><hr></div><h1><span>Session A — Workspace Outside Sensitive Directory</span></h1><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library.Devices</span></code></pre><p class="isSelectedEnd"><span>Target file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>From this workspace, the target file is OUTSIDE the workspace root.</span></p><div contenteditable="false"><hr></div><h2><span>Case 1 — Standard Read (Correctly Blocked)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Result:</span></p><pre dir="ltr"><code dir="ltr"><span>Access blocked by security policy</span></code></pre><p class="isSelectedEnd"><span>Claude correctly respects the deny rule.</span></p><div contenteditable="false"><hr></div><h2><span>Case 2 — Parent Traversal Attachment (BYPASS)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @../Library/Security/KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Observed result:</span></p><pre dir="ltr"><code dir="ltr"><span>Read ..\Library\Security\KeyIV.cs (111 lines)</span></code></pre><p class="isSelectedEnd"><span>Claude successfully loaded the file and summarized its contents.</span></p><p class="isSelectedEnd"><span>The loaded content included:</span></p><ul data-spread="false"><li><span>structure definitions</span></li><li><span>AES key/IV implementation details</span></li><li><span>serialization format details</span></li><li><span>cryptographic implementation notes</span></li><li><span>security weakness observations</span></li></ul><p class="isSelectedEnd"><span>This bypassed:</span></p><ul data-spread="false"><li><code dir="ltr"><span>permissions.deny</span></code></li><li><span>PreToolUse hooks</span></li><li><span>workspace boundary expectations</span></li></ul><p class="isSelectedEnd"><span>No permission warning was triggered before content injection.</span></p><div contenteditable="false"><hr></div><h1><span>Session B — Workspace Includes Sensitive Directory</span></h1><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject</span></code></pre><p class="isSelectedEnd"><span>Target file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>From this workspace, the target file is INSIDE the workspace root.</span></p><div contenteditable="false"><hr></div><h2><span>Case 3 — Workspace Attachment (Correctly Blocked)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Result:</span></p><pre dir="ltr"><code dir="ltr"><span>File path rejected by permission settings</span></code></pre><p class="isSelectedEnd"><span>Claude correctly refuses access.</span></p><p class="isSelectedEnd"><span>This demonstrates that:</span></p><ul data-spread="false"><li><span>the deny system itself is functioning</span></li><li><span>attachment syntax is not universally unsafe</span></li><li><span>the bypass specifically occurs when using parent traversal outside the active workspace root</span></li></ul><div contenteditable="false"><hr></div><h1><span>Key Observation</span></h1><p class="isSelectedEnd"><span>The vulnerability only reproduces when ALL of the following are true:</span></p><ol data-spread="false" start="1"><li><span>the target file is OUTSIDE the active workspace root</span></li><li><span>the file is referenced using attachment syntax</span></li><li><span>parent traversal (</span><code dir="ltr"><span>../</span></code><span>) is used</span></li></ol><p class="isSelectedEnd"><span>Examples:</span></p> Access Method | Result -- | -- Read absolute_path | Blocked Read relative_path | Blocked @workspace/file | Blocked @../outside_workspace/file | BYPASSED

Fix Action

Fixed

RAW_BUFFERClick to expand / collapse
<html> <body> <!--StartFragment--><h1><span>Summary</span></h1><p class="isSelectedEnd"><span>Claude Code's permission system (</span><code dir="ltr"><span>permissions.deny</span></code><span>) can be bypassed using the </span><code dir="ltr"><span>@../</span></code><span> attachment syntax when referencing files outside the current workspace root.</span></p><p class="isSelectedEnd"><span>The same file is correctly blocked when accessed through:</span></p><ul data-spread="false"><li><span>standard </span><code dir="ltr"><span>Read</span></code><span> tool usage</span></li><li><span>absolute path reads</span></li><li><span>workspace-local </span><code dir="ltr"><span>@file</span></code><span> attachment syntax</span></li></ul><p class="isSelectedEnd"><span>However, the file becomes readable when referenced using relative parent traversal attachment syntax:</span></p><pre dir="ltr"><code dir="ltr"><span>@../path/to/file</span></code></pre><p class="isSelectedEnd"><span>This allows sensitive files located outside the active workspace root to be injected directly into the model context despite explicit deny rules.</span></p><p class="isSelectedEnd"><span>The issue appears to originate from a separate attachment preprocessing pipeline that bypasses the standard permission enforcement layer.</span></p><div contenteditable="false"><hr></div><h1><span>Affected Product</span></h1><pre dir="ltr"><code dir="ltr"><span>Claude Code</span></code></pre><div contenteditable="false"><hr></div><h1><span>Affected Version</span></h1><pre dir="ltr"><code dir="ltr"><span>Claude Code v2.1.146</span></code></pre><p class="isSelectedEnd"><span>Observed on:</span></p><pre dir="ltr"><code dir="ltr"><span>Windows</span></code></pre><div contenteditable="false"><hr></div><h1><span>Severity</span></h1><p class="isSelectedEnd"><span>Suggested severity:</span></p><pre dir="ltr"><code dir="ltr"><span>Medium to High</span></code></pre><p class="isSelectedEnd"><span>Reasoning:</span></p><ul data-spread="false"><li><span>explicit security policy bypass</span></li><li><span>exposure of sensitive files outside workspace boundary</span></li><li><span>inconsistent policy enforcement behavior</span></li><li><span>low user visibility</span></li><li><span>easy exploitation</span></li><li><span>false sense of security for users relying on deny rules</span></li></ul><div contenteditable="false"><hr></div><h1><span>Security Impact</span></h1><p class="isSelectedEnd"><span>This issue allows access to sensitive files that users explicitly intended to block using Claude Code's permission system.</span></p><p class="isSelectedEnd"><span>Potentially exposed data includes:</span></p><ul data-spread="false"><li><span>API keys</span></li><li><span>SSH keys</span></li><li><span>certificates</span></li><li><code dir="ltr"><span>.env</span></code><span> files</span></li><li><span>proprietary source code</span></li><li><span>authentication tokens</span></li><li><span>internal security implementations</span></li><li><span>private repositories adjacent to the active workspace</span></li></ul><p class="isSelectedEnd"><span>The vulnerability is especially concerning because:</span></p><ul data-spread="false"><li><code dir="ltr"><span>permissions.deny</span></code><span> appears to function correctly in normal cases</span></li><li><span>PreToolUse hooks also appear functional</span></li><li><span>only specific attachment traversal syntax bypasses enforcement</span></li></ul><p class="isSelectedEnd"><span>This may lead users to incorrectly assume their sensitive directories are protected.</span></p><div contenteditable="false"><hr></div><h1><span>Environment</span></h1><p class="isSelectedEnd"><span>Operating system:</span></p><pre dir="ltr"><code dir="ltr"><span>Windows</span></code></pre><p class="isSelectedEnd"><span>Claude session root (workspace root):</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library.Devices</span></code></pre><div contenteditable="false"><hr></div><h1><span>Workspace Layout</span></h1><pre dir="ltr"><code dir="ltr"><span>D:\TestProject ├── Library │ └── Security │ └── KeyIV.cs └── Library.Devices</span></code></pre><p class="isSelectedEnd"><span>Target sensitive file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Important detail:</span></p><ul data-spread="false"><li><code dir="ltr"><span>Library.Devices</span></code><span> is the active Claude workspace</span></li><li><code dir="ltr"><span>Library\Security</span></code><span> is OUTSIDE the active workspace root</span></li><li><span>access is achieved using parent directory traversal (</span><code dir="ltr"><span>../</span></code><span>)</span></li></ul><div contenteditable="false"><hr></div><h1><span>Permission Configuration</span></h1><p class="isSelectedEnd"><span>File:</span></p><pre dir="ltr"><code dir="ltr"><span>~/.claude/settings.json</span></code></pre><p class="isSelectedEnd"><span>Configuration:</span></p><pre dir="ltr"><code dir="ltr"><span>{ "permissions": { "deny": <span data-placeholder-token="true" class="text-token-text-primary cursor-text rounded-sm">[ "Read(**/Security/**)" ]</span> } }</span></code></pre><p class="isSelectedEnd"><span>This rule correctly blocks direct reads to files inside any </span><code dir="ltr"><span>Security</span></code><span> directory.</span></p><div contenteditable="false"><hr></div><h1><span>Expected Behavior</span></h1><p class="isSelectedEnd"><span>Any attempt to access:</span></p><pre dir="ltr"><code dir="ltr"><span>../Library/Security/KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>should be blocked consistently regardless of access syntax.</span></p><p class="isSelectedEnd"><span>The following access methods should all be denied equally:</span></p><ul data-spread="false"><li><span>direct </span><code dir="ltr"><span>Read</span></code></li><li><span>absolute paths</span></li><li><code dir="ltr"><span>@file</span></code></li><li><code dir="ltr"><span>@../file</span></code></li><li><span>attachment syntax</span></li><li><span>relative paths</span></li></ul><p class="isSelectedEnd"><span>Permission enforcement should occur AFTER path normalization and BEFORE any file content is injected into model context.</span></p><div contenteditable="false"><hr></div><h1><span>Actual Behavior</span></h1><p class="isSelectedEnd"><span>The behavior is inconsistent depending on how the file is referenced.</span></p><div contenteditable="false"><hr></div><h1><span>Session A — Workspace Outside Sensitive Directory</span></h1><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library.Devices</span></code></pre><p class="isSelectedEnd"><span>Target file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>From this workspace, the target file is OUTSIDE the workspace root.</span></p><div contenteditable="false"><hr></div><h2><span>Case 1 — Standard Read (Correctly Blocked)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Result:</span></p><pre dir="ltr"><code dir="ltr"><span>Access blocked by security policy</span></code></pre><p class="isSelectedEnd"><span>Claude correctly respects the deny rule.</span></p><div contenteditable="false"><hr></div><h2><span>Case 2 — Parent Traversal Attachment (BYPASS)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @../Library/Security/KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Observed result:</span></p><pre dir="ltr"><code dir="ltr"><span>Read ..\Library\Security\KeyIV.cs (111 lines)</span></code></pre><p class="isSelectedEnd"><span>Claude successfully loaded the file and summarized its contents.</span></p><p class="isSelectedEnd"><span>The loaded content included:</span></p><ul data-spread="false"><li><span>structure definitions</span></li><li><span>AES key/IV implementation details</span></li><li><span>serialization format details</span></li><li><span>cryptographic implementation notes</span></li><li><span>security weakness observations</span></li></ul><p class="isSelectedEnd"><span>This bypassed:</span></p><ul data-spread="false"><li><code dir="ltr"><span>permissions.deny</span></code></li><li><span>PreToolUse hooks</span></li><li><span>workspace boundary expectations</span></li></ul><p class="isSelectedEnd"><span>No permission warning was triggered before content injection.</span></p><div contenteditable="false"><hr></div><h1><span>Session B — Workspace Includes Sensitive Directory</span></h1><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject</span></code></pre><p class="isSelectedEnd"><span>Target file:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>From this workspace, the target file is INSIDE the workspace root.</span></p><div contenteditable="false"><hr></div><h2><span>Case 3 — Workspace Attachment (Correctly Blocked)</span></h2><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Result:</span></p><pre dir="ltr"><code dir="ltr"><span>File path rejected by permission settings</span></code></pre><p class="isSelectedEnd"><span>Claude correctly refuses access.</span></p><p class="isSelectedEnd"><span>This demonstrates that:</span></p><ul data-spread="false"><li><span>the deny system itself is functioning</span></li><li><span>attachment syntax is not universally unsafe</span></li><li><span>the bypass specifically occurs when using parent traversal outside the active workspace root</span></li></ul><div contenteditable="false"><hr></div><h1><span>Key Observation</span></h1><p class="isSelectedEnd"><span>The vulnerability only reproduces when ALL of the following are true:</span></p><ol data-spread="false" start="1"><li><span>the target file is OUTSIDE the active workspace root</span></li><li><span>the file is referenced using attachment syntax</span></li><li><span>parent traversal (</span><code dir="ltr"><span>../</span></code><span>) is used</span></li></ol><p class="isSelectedEnd"><span>Examples:</span></p> Access Method | Result -- | -- Read absolute_path | Blocked Read relative_path | Blocked @workspace/file | Blocked @../outside_workspace/file | BYPASSED <p class="isSelectedEnd"><span>This further supports the conclusion that attachment traversal bypasses the normal tool execution path entirely.</span></p><div contenteditable="false"><hr></div><h1><span>Root Cause Hypothesis</span></h1><p class="isSelectedEnd"><span>The attachment system likely treats:</span></p><pre dir="ltr"><code dir="ltr"><span>@../</span></code></pre><p class="isSelectedEnd"><span>as a trusted prompt preprocessing operation rather than a normal file access operation.</span></p><p class="isSelectedEnd"><span>As a result:</span></p><ul data-spread="false"><li><span>path traversal occurs before policy enforcement</span></li><li><span>resolved paths bypass permission validation</span></li><li><span>content is injected directly into model context</span></li></ul><div contenteditable="false"><hr></div><h1><span>Suggested Fix</span></h1><p class="isSelectedEnd"><span>All attachment-based file access should pass through the exact same permission enforcement layer as standard </span><code dir="ltr"><span>Read</span></code><span> tool operations.</span></p><p class="isSelectedEnd"><span>Specifically:</span></p><ol data-spread="false" start="1"><li><span>normalize all paths before validation</span></li><li><span>resolve relative traversal before permission checks</span></li><li><span>enforce deny rules on resolved absolute paths</span></li><li><span>prevent attachment preprocessing from bypassing policy enforcement</span></li><li><span>ensure PreToolUse hooks execute consistently for all file access paths</span></li></ol><div contenteditable="false"><hr></div><h1><span>Recommended Security Model</span></h1><p class="isSelectedEnd"><span>The following should be equivalent from a security perspective:</span></p><pre dir="ltr"><code dir="ltr"><span>Read file Read absolute path Read relative path @file @../file</span></code></pre><p class="isSelectedEnd"><span>All file access methods should:</span></p><ul data-spread="false"><li><span>share a single authorization layer</span></li><li><span>enforce identical deny policies</span></li><li><span>enforce workspace boundary rules consistently</span></li></ul><div contenteditable="false"><hr></div><h1><span>Reproduction Transcript</span></h1><h2><span>Vulnerable Case</span></h2><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject\Library.Devices</span></code></pre><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @../Library/Security/KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Observed:</span></p><pre dir="ltr"><code dir="ltr"><span>Read ..\Library\Security\KeyIV.cs (111 lines)</span></code></pre><p class="isSelectedEnd"><span>Claude then summarized the file contents successfully.</span></p><div contenteditable="false"><hr></div><h2><span>Protected Case</span></h2><p class="isSelectedEnd"><span>Claude launched from:</span></p><pre dir="ltr"><code dir="ltr"><span>D:\TestProject</span></code></pre><p class="isSelectedEnd"><span>Prompt:</span></p><pre dir="ltr"><code dir="ltr"><span>Read @Library\Security\KeyIV.cs</span></code></pre><p class="isSelectedEnd"><span>Observed:</span></p><pre dir="ltr"><code dir="ltr"><span>File path rejected by permission settings</span></code></pre><p class="isSelectedEnd"><span>Access was correctly denied.</span></p><div contenteditable="false"><hr></div><h1><span>Conclusion</span></h1><p class="isSelectedEnd"><span>Claude Code currently enforces permissions inconsistently depending on attachment path resolution behavior.</span></p><p class="isSelectedEnd"><span>Files outside the workspace root can bypass deny rules when referenced through:</span></p><pre dir="ltr"><code dir="ltr"><span>@../</span></code></pre><p><span>This represents a security policy bypass and may expose sensitive files despite explicit user-configured restrictions.</span></p><!--EndFragment--> </body> </html>

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] Claude Code permission bypass using @../ attachment syntax outside workspace boundary [1 pull requests]