Inline markdown `Preview` mode is hard-disabled for `.md` files in `.claude` directory due to bundled exclusion list

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor’s inline markdown Preview mode does not activate for .md files inside ~/.claude, even though the same files work normally if moved to another directory. For markdown files under a path containing .claude, Cursor does not open the rich WYSIWYG / Notion-like markdown editor shown by the editor’s Preview / Markdown toggle. The same markdown files work normally if copied to a directory without .claude in the path.

Steps to Reproduce

  1. Put a markdown file under ~/.claude, for example ~/.claude/test.md
  2. Open it in Cursor
  3. Observe that inline markdown Preview does not activate
  4. Copy the same file to a non-excluded path, for example ~/tmp/test.md
  5. Open that copy in Cursor
  6. Observe that the WYSIWYG markdown editor now works

Expected Behavior

Inline markdown Preview should activate for markdown files in ~/.claude the same way it does for equivalent files in other directories.

Screenshots / Screen Recordings

Operating System

MacOS

Version Information

Cursor IDE Version: 3.1.17 (Universal)
VSCode Version: 1.105.1

Additional Information

I found what looks like a hardcoded exclusion in Cursor’s bundled app code.

In the bundled app code here:

/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js

I found a compiled module named:

out-build/vs/workbench/contrib/markdownEditor/browser/markdownEditorExclusions.js

with this exclusion list:

Wll=[".cursor",".claude",".codex"]

and the eligibility logic appears to block the markdown editor if the path matches one of those segments.

Relevant compiled snippet:

function GLw(n){
  const e=n.path.replace(/\\/g,"/").split("/").filter(Boolean);
  return Wll.find(t=>e.includes(t))
}

function Sod(n,e,t){
  for(const i of Wll){
    const r=Ko(e,i);
    if(v5(n,r))return!0
  }
  for(const i of t)for(const r of Wll){
    const s=Ko(i,r);
    if(v5(n,s))return!0
  }
  return t.length===0?GLw(n)!==void 0:!1
}

Things I already tried:

  • uninstalling Claude-related extensions
  • clearing editor override cache
  • removing Claude-related user settings
  • checking workbench.editorAssociations
  • reopening the same file from a non-.claude path

Current workaround: Symlink

  1. rename ~/.claude to something else, for example ~/.claude-config
  2. create a symlink:
    ln -s ~/.claude-config ~/.claude
    
  3. open files via the symlinked path

Because the real directory name no longer contains .claude, inline markdown Preview activates again.

If this is intentional, could this exclusion list be made configurable, or could .claude be removed from it? Right now it blocks a normal markdown workflow for users who keep docs/config in that directory.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the detailed breakdown, your reverse engineering was spot on.

This is intentional behavior, not a bug. We added an exclusion list (.cursor, .claude, .codex) so the WYSIWYG editor won’t open on top of config or rules files in those folders. Editing them as plain text is safer. Later we added an allow-list mechanism, for example .cursor/skills/ is excluded from it, so the team knows the original list is a bit too strict in some cases.

I passed your request to make the exclusion configurable, or to add an exception for custom subfolders under .claude, to the team. There’s already a tracked issue for a similar request for .cursor. I can’t share an ETA, but if there’s an update I’ll reply in the thread.

The symlink workaround works, and it’s fine to use for now.

1 Like

Thanks for the helpful reply @deanrie ! Yeah I wasn’t sure if it was intentional, but couldn’t think of any reason preventing it from being configurable at least.

Can you share reasoning for blocking WYSIWYG editor for these 3 repos? Guessing primarily security

And I also only currently see a need to use it on .md files, not the rest of ~/.claude.

Anyway, awaiting next update!

Not really a security thing, more about editing fidelity. In .cursor/.claude/.codex you usually have config and rules files where the visible Markdown syntax matters: # headings, frontmatter, indentation, raw characters that get parsed by the agent or runtime. A WYSIWYG editor hides or reformats some of that, so it’s easy to accidentally break a rule or config without noticing. That’s why we decided to keep plain text by default for those folders, and for cases where rich rendering is actually useful, we added an allow list (we added .cursor/skills/ first).

About “only .md”: the exclusion already applies only to Markdown files. WYSIWYG doesn’t activate for .json/.yml/.toml in those directories anyway, so the rest of ~/.claude isn’t affected.

I noted your case (Markdown docs inside .claude) as an argument for expanding the allow list or adding a setting option. I can’t give an ETA, but if there’s an update I’ll reply in the thread. For now, the symlink workaround is a solid option.

1 Like

Makes sense, thanks!