cloudflare / cloudflare/developer-platform
Deploy to Cloudflare button: source import silently fails — created repo has only README + wrangler config, worker stuck on Hello World placeholder
- Dominant language
- No language data
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## What happened
Clicking a **Deploy to Cloudflare** button (`deploy.workers.cloudflare.com/?url=...`) completes with **no visible error**, but the deployment is broken:
- The newly created GitHub repo contains **only two files**: `README.md` and the wrangler config. All source is missing (`src/`, `package.json`, lockfile, everything else).
- The wrangler config's `name` field is rewritten to the new worker name, with all other content — including comments — preserved verbatim. So the repo was clearly **synthesized from the deploy page's parsed state**, not cloned from git.
- Commit fingerprint of the broken path: `Initial commit` (adds `README.md`) + `Uploading template.` (adds the wrangler config) — instead of the normal single **`source repo import`** commit that successful deploys produce.
- The worker is created but stays on the **"Hello World" placeholder** (deployments show `Source: Upload` at flow time). Since the repo has no source, any build would fail anyway.
- Secrets *are* provisioned (a `Secret Change` deployment appears seconds after creation).
- Workers Builds doesn't appear to be wired up either: later pushes to the created repo trigger **no builds and no check-runs** (commit status stays `pending` with zero contexts).
- The deploy UI reports **neither success nor failure** — it just returns to the deploy screen.
## Evidence this is a service-side intermittent failure (not repo content)
GitHub commit search shows two distinct outcomes happening **in parallel, same day**:
| Path | Commits | Created repo content |
|---|---|---|
| ✅ success | single `source repo import` | full source tree |
| ❌ fallback | `Initial commit` + `Uploading template.` | `README.md` + wrangler config only |
**Same source, different outcomes:**
- `chanfana-openapi-template` (**official Cloudflare template**): [chaunceyv2-byte/chanfana-openapi-template](https://github.com/chaunceyv2-byte/chanfana-openapi-template) imported the full source on 2026-07-04, while [walusimbikassim9-lab/chanfana-openapi-template](https://github.com/walusimbikassim9-lab/chanfana-openapi-template) got the 2-file fallback on 2026-07-03.
- `wloc-spoofer` (community repo): [xw-yin/wloc-spoofer](https://github.com/xw-yin/wloc-spoofer) succeeded and [qqqqqqqqqqqq23131/wloc-spoofer](https://github.com/qqqqqqqqqqqq23131/wloc-spoofer) got 2 files — **same day**.
**Ruled out** (each disproven by at least one observed case):
- monorepo subdirectory URLs — a fully self-contained standalone repo fails too
- `wrangler.toml` vs `wrangler.jsonc` — plenty of `.jsonc` victims, including the official template above
- private repos — all repos involved are public
- missing template metadata (`.gitignore`, `cloudflare` key in `package.json`, `.dev.vars.example`) — official templates have all of these and still hit the fallback
**Scale:** a commit search for `"Uploading template."` surfaces **dozens of affected repos in 2026-07-03 → 07-05 alone**. Failures also look sticky per user/session: one user hit it 3× in one day (`peterniss/proxycontroller`, `...02`, `...03`), and I hit it twice in one day with two different source repos.
## My repro (account `a6f98d533d0a0c22b3fdaded5cd8b8b2`)
1. **2026-07-04 ~19:02 UTC** — `?url=https://github.com/Javis603/token-monitor/tree/main/worker` (public monorepo subdir) → repo `freefrank/token-monitor-hub` created with 2 files, worker `token-monitor-hub` left on the Hello World placeholder.
2. **2026-07-04 ~19:53 UTC** — `?url=https://github.com/freefrank/token-monitor-hub` (standalone, fully self-contained, public — I had pushed the full source into it by then) → repo `token-monitor-hub-test` created, **again with only 2 files**.
(I've since recovered manually: pushed the source and ran `wrangler deploy` — the worker itself runs fine, so the source is not the problem. The `-test` worker has been deleted.)
## Expected behavior
Either the created repo contains the full source (`source repo import`), or the flow **surfaces an error** instead of silently committing a placeholder template and leaving a Hello World worker that looks deployed.
## Ask
1. Fix / add retries to the source-import step of the deploy flow.
2. Surface import failures in the deploy UI — the silent fallback makes users debug their own repos for hours when nothing is wrong with them.
Contributor guide
Assessment
This issue has not been assessed yet.