WebFetch drops image alt text and angle-bracket placeholders from text/markdown pages

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

The agent WebFetch tool rewrites pages that the server already returns as text/markdown. The rewrite deletes image alt text and strips angle-bracket placeholders. On the Auto-review docs page, the check order exists only as the alt text of one image, so the fetched page says “Cursor checks each call in this order:” and then has no steps. The docs reader treats that as a truncated page and fetches the same URL again.

Steps to Reproduce

  1. Fetch the raw page:
    curl -sS -D - -o /tmp/run-modes.md https://cursor.com/docs/agent/security/run-modes.md
    The response Content-Type is text/markdown.
  2. In that file, confirm these two lines are present:
    • “Cursor checks each call in this order:” followed by an image whose alt text is the execution lifecycle (allowlisted shell, Fetch, and MCP calls run outside the sandbox; other shell commands run in the sandbox; the rest go to the classifier).
    • The table cell <project-dir>/.cursor/permissions.json
  3. In Agent chat, have the agent call WebFetch on that same URL.
  4. Compare the tool result to the curl body.

Expected Behavior

WebFetch returns the markdown the server sent. The image alt text is kept as text, because that caption is the only copy of the check order. The <project-dir> placeholder is kept.

Operating System

MacOS

Version Information

Cursor version: 3.24.18
Operating system: macOS 26.6.2 (build 25G83)

For AI issues: add Request ID with privacy disabled

Request IDs: 05a31cf6-8bb8-4754-ab17-84f6b222cf57 and 70e4c79d-4a10-4129-ade3-37e4bd3337e4

Additional Information

Actual Behavior
WebFetch returns the page with the image and its alt text removed, so “in this order:” is followed immediately by the next paragraph. The path <project-dir>/.cursor/permissions.json comes back as /.cursor/permissions.json.

This is not a local configuration. User settings have no fetch or markdown option, and hooks do not match WebFetch.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hi @josephcrawfordSRH, I reproduced this on the same page: the image caption with the check order is gone, <project-dir> is stripped from both table rows, and link targets are dropped as well. WebFetch runs every page through a text extraction step, including pages already served as markdown, and that step is what removes them.

I’ve passed this to the team. For now, when you need a page exactly as served, ask the agent to fetch it in the terminal instead, for example curl -sS https://cursor.com/docs/agent/security/run-modes.md. A project rule telling the agent to use curl for .md URLs makes that stick.

Thank you for confirming it is an issue and not on my end, I am currently setting up a temporary rule in my local to use curl, thank you for that work-around.