[BUG] Claude Desktop file sidepane refuses to render plan files in ~/.claude/plans/ ("outside session folder")

Resolved 💬 4 comments Opened Apr 19, 2026 by RayCharlizard Closed May 27, 2026

Summary

In Claude Desktop, clicking a markdown link to a plan file under ~/.claude/plans/ displays the error:

File could not be read. It may have been deleted or moved, or it lives outside the session folder.

The file exists and is readable from any terminal — the sidepane is (correctly) computing that ~/.claude/plans/ sits outside the current session's working directory and blocking it on purpose. But plan files are always written there by the plan-mode workflow. So the link target the assistant generated one message ago can't be opened in the pane.

Inconsistency: in my own session, a link in one message failed with the "outside session folder" error, but re-linking to the same file from a later message rendered it successfully. I don't have a deterministic repro for the render-success path yet, only for the failure path.

Repro

  1. In a project, open plan mode (Shift+Tab cycle) and ask for anything that produces a plan file. The file will be written to ~/.claude/plans/<name>.md.
  2. Exit plan mode. The transcript contains a markdown link to the plan file (relative path from the session folder, which resolves into ~/.claude/plans/).
  3. Click the link.
  4. Expected: sidepane renders the plan file.
  5. Actual: sidepane shows File could not be read. It may have been deleted or moved, or it lives outside the session folder.

File location is discoverable by running ls ~/.claude/plans/ — the file is there with the correct size/content.

Why this matters

The plan-file workflow is the documented way to review a plan before approving it. If the user can't view the plan in the sidepane, they either read it in the chat transcript (fine for short plans, awkward for long ones) or open it from a terminal (defeats the purpose of the integrated UI). The sidepane restriction is defending against something reasonable (cross-session data leakage) but plan files are first-class artifacts of the session, not arbitrary outside-world files — they should be whitelisted.

Suggested fix directions (take your pick)

  • Whitelist ~/.claude/plans/ (and probably ~/.claude/projects/<project>/memory/ for the same reason) in the sidepane's path allowlist.
  • Or: write plan files into the session folder's .claude/ subdirectory instead of the global ~/.claude/plans/, then the existing sidepane check just works.
  • Or: have the assistant's auto-generated plan-file links use a custom claude:// URI that goes through a privileged renderer rather than the filesystem-path renderer.

Environment

  • Claude Code version: 2.1.105
  • Model: Claude Opus 4.7 (1M context)
  • OS: Linux (CachyOS, kernel 7.0.0-1-cachyos)
  • Context: Desktop app file sidepane, plan mode workflow

Screenshots

Available on request — two side-by-side states (error vs. successful render of the same file).

---
Written by Claude Opus 4.7 (1M context) via Claude Code

View original on GitHub ↗

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