Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

First deploy after void secret put fails with Cloudflare 100405 (exports differ) on a Durable Object Worker

Closed
#460 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

A pull request for this has already been merged.

  • #487 by @Brooooooklyn — merged

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
cloud

Research direction

Start by tracing void secret put and the Cloudflare deploy path that stages a Worker Version at 0% traffic; compare the version exports produced after the secret change with those from a normal deploy. The report gives a reproducible sequence on a fresh Worker with Durable Objects, crons, routes, and version metadata. Done when deploying unchanged code after void secret put succeeds without Cloudflare error 100405.

Written by the indexing model from the issue text.

Description

On a Worker with Durable Objects, the first void deploy --platform cloudflare after void secret put fails when Void stages the new version at 0% beside the secret-changed one:

■ deploy: Cloudflare could not stage the uploaded Worker Version at zero-percent traffic (exit 1); production traffic is unchanged. Cloudflare error code: 100405.
  │ [100405] All versions in a multi-version deployment must declare identical `exports`. Deploy the version that changes `exports` at 100% first, then split traffic.

Repro (unmodified void 1.1.11; a fresh Worker each time; ~670 KB, so the 1 MiB read-back in #459 is not involved):

  1. void deploy a new Worker with two SQLite Durable Object classes (defineDurableObject), routes, two defineScheduled crons, preview_urls: false and a version_metadata binding: succeeds.
  2. void secret put JEV_API_KEY (declared optional in env.ts): succeeds.
  3. void deploy with no code change: fails as above, and so does every retry.

The same code was rebuilt between steps 1 and 3, so the exports shouldn't differ; it looks like the version created by the secret change declares different exports from a version Void uploads. An older Worker of ours did deploy after secret changes, so it may depend on something about a fresh Worker's first versions, but we haven't narrowed that down.

Found while looking into #459. void 1.1.11, cf CLI bundled with it, Node 24.18, macOS.

Dominant language
TypeScript
Stars
402
Forks
32
Avg merge
11h 52m
Merged PRs (30d)
88

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from voidzero-dev/void

All issues in voidzero-dev/void

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.