Summary
A Deno 2.7.12 regression appears to break Wrangler asset uploads in GitHub Actions. The deploy gets as far as Cloudflare API access and then fails during the static asset upload phase with repeated TypeError: fetch failed errors.
Related Cloudflare report:
Exact versions from the failing run
- Deno: 2.7.12
- Wrangler: 4.82.1
The Cloudflare log shared in the linked issue was captured with Wrangler 4.82.1. I also confirmed in that issue thread that Deno 2.7.11 works, while 2.7.12 is the failing version.
How I ran it
In GitHub Actions, I used denoland/setup-deno@v2, pinned Deno to v2.7.12, and ran:
deno run -A npm:wrangler deploy --env canary
Observed behavior
The deploy gets as far as Cloudflare API access and then fails while uploading assets:
GET /workers/services/... succeeds
GET /workers/scripts/.../deployments succeeds
- asset upload session creation succeeds
- the POST to
.../workers/assets/upload?base64=true fails repeatedly with TypeError: fetch failed
Relevant log excerpt from Wrangler:
π Starting asset upload...
π Found 20 new or modified static assets to upload. Proceeding with upload...
Asset upload failed. Retrying...
TypeError: fetch failed
β [ERROR] fetch failed
Expected behavior
Wrangler should upload the generated assets and complete the deploy.
Notes
- DNS resolution for
api.cloudflare.com succeeds in the runner.
curl -I https://api.cloudflare.com also succeeds, so this does not look like a basic network or DNS outage.
- The failure is specific to the asset upload path.
If helpful, I can provide the full Wrangler log and the exact GitHub Actions workflow used for the reproduction.
Simplified repro details
Here is the smallest version I could reduce it to while still keeping the relevant deploy path. The YAML below is a simplified version of what I have in my repo.
wrangler.jsonc
GitHub Actions snippet
- uses: actions/checkout@v6
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.7.12
cache: true
- name: Install Dependencies
run: deno install
- name: Build Canary
run: deno task build:worker:canary
- name: Deploy Canary
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ vars.SENTRY_DSN }}
SENTRY_RELEASE: ${{ github.sha }}
VITE_SENTRY_DSN: ${{ vars.VITE_SENTRY_DSN }}
run: deno run -A npm:wrangler deploy --env canary
Summary
A Deno 2.7.12 regression appears to break Wrangler asset uploads in GitHub Actions. The deploy gets as far as Cloudflare API access and then fails during the static asset upload phase with repeated
TypeError: fetch failederrors.Related Cloudflare report:
TypeError: fetch failedduring asset uploadΒ cloudflare/workers-sdk#13443Exact versions from the failing run
The Cloudflare log shared in the linked issue was captured with Wrangler 4.82.1. I also confirmed in that issue thread that Deno 2.7.11 works, while 2.7.12 is the failing version.
How I ran it
In GitHub Actions, I used
denoland/setup-deno@v2, pinned Deno tov2.7.12, and ran:Observed behavior
The deploy gets as far as Cloudflare API access and then fails while uploading assets:
GET /workers/services/...succeedsGET /workers/scripts/.../deploymentssucceeds.../workers/assets/upload?base64=truefails repeatedly withTypeError: fetch failedRelevant log excerpt from Wrangler:
Expected behavior
Wrangler should upload the generated assets and complete the deploy.
Notes
api.cloudflare.comsucceeds in the runner.curl -I https://api.cloudflare.comalso succeeds, so this does not look like a basic network or DNS outage.If helpful, I can provide the full Wrangler log and the exact GitHub Actions workflow used for the reproduction.
Simplified repro details
Here is the smallest version I could reduce it to while still keeping the relevant deploy path. The YAML below is a simplified version of what I have in my repo.
wrangler.jsonc{ "$schema": "./node_modules/wrangler/config-schema.json", "assets": { "binding": "ASSETS", "directory": "./build/client", "html_handling": "drop-trailing-slash" }, "base_dir": "./build", "compatibility_date": "2026-04-13", "compatibility_flags": [ "enable_request_signal", "nodejs_als", "nodejs_compat", "pedantic_wpt", "request_signal_passthrough" ], "find_additional_modules": true, "main": "./build/worker.js", "minify": false, "no_bundle": true, "preserve_file_names": true, "rules": [ { "globs": ["assets/**/*.js"], "type": "ESModule" } ], "workers_dev": true }GitHub Actions snippet