[BUG] Cowork: WebFetch blocked by AllTrails edge protection (403) while Claude.ai web_fetch succeeds on same URLs

Resolved 💬 3 comments Opened Apr 23, 2026 by mdninerfan-creator Closed Apr 27, 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?

WebFetch returns HTTP 403 on every alltrails.com URL I try in Cowork. The same URLs fetch cleanly in Claude.ai chat via web_fetch. Tested this session:

My network egress is set to allow all domains, so the block is upstream — AllTrails/Cloudflare is refusing the request based on user-agent or IP fingerprint, not the Anthropic proxy. This blocks a hiking-book skill that relies on AllTrails as source of truth for trail data.

What Should Happen?

WebFetch should succeed on alltrails.com URLs in Cowork and return the page contents as markdown, matching Claude.ai chat's web_fetch behavior. Same URLs, same response. The fix likely requires updating the fetch fingerprint (user-agent, TLS profile, or IP range) to whatever Claude.ai uses so Cloudflare stops blocking it.

Error Messages/Logs

Error responses from this session:

AllTrails (all four URLs above):
  "Request failed with status code 403"

For comparison — attempting WebFetch on google.com returned a
different error, confirming the AllTrails block is NOT at the
Anthropic proxy:

  {
    "error_type": "EGRESS_BLOCKED",
    "domain": "www.google.com",
    "message": "Access to www.google.com is blocked by the network egress proxy."
  }

Distinction matters:
  EGRESS_BLOCKED = Anthropic's proxy refused the request
  HTTP 403       = the request reached AllTrails; AllTrails refused it

So WebFetch is being allowed out by Anthropic's proxy for
alltrails.com, but AllTrails's edge (Cloudflare) is returning 403.
Fix is in the outbound fingerprint, not the allowlist.

Steps to Reproduce

Steps to reproduce:

  1. Start any Cowork session.
  2. Ask Claude to run WebFetch on an AllTrails URL, e.g.:

https://www.alltrails.com/trail/us/maryland/kinder-farm-park-trail
Prompt can be anything — I used "Extract trail name, length,
elevation gain, difficulty, rating, review count."

  1. Observe: "Request failed with status code 403".
  2. Repeat for any other alltrails.com URL — same 403 every time.
  3. In a separate Claude.ai chat session, ask Claude to fetch the

same URL with web_fetch.

  1. Observe: succeeds. Returns the full page as markdown, including

the stat block (miles, elevation, difficulty, rating, review count).

Repro rate: 100% in Cowork, 0% in Claude.ai chat, on identical URLs.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.111

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Cowork (Claude desktop app on Windows 11)

View original on GitHub ↗

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