Update dependency wrangler to v4.96.0 (main)#527
Conversation
|
🚀 Preview is available at https://039f4b07.enterprise-contract.pages.dev |
4de6708 to
8f5d08f
Compare
|
🚀 Preview is available at https://08300ee1.enterprise-contract.pages.dev |
8f5d08f to
063bccc
Compare
|
🚀 Preview is available at https://6626ba07.enterprise-contract.pages.dev |
063bccc to
d1bb21f
Compare
|
🚀 Preview is available at https://547ec4d3.enterprise-contract.pages.dev |
d1bb21f to
085816e
Compare
|
🚀 Preview is available at https://777ca95c.enterprise-contract.pages.dev |
085816e to
04a82b2
Compare
|
🚀 Preview is available at https://41dff465.enterprise-contract.pages.dev |
04a82b2 to
d42d94a
Compare
|
🚀 Preview is available at https://604b8a26.enterprise-contract.pages.dev |
d3d3ce0 to
8b18491
Compare
8b18491 to
7fc3e4c
Compare
|
🚀 Preview is available at https://cfdb8b39.enterprise-contract.pages.dev |
7fc3e4c to
ab5547c
Compare
|
🚀 Preview is available at https://360d8039.enterprise-contract.pages.dev |
ab5547c to
aa15d89
Compare
|
🚀 Preview is available at https://bf28eac1.enterprise-contract.pages.dev |
aa15d89 to
f3e5e17
Compare
|
🚀 Preview is available at https://1eb41ed8.enterprise-contract.pages.dev |
fa3b4af to
e9ce0a6
Compare
|
🚀 Preview is available at https://aca153ea.enterprise-contract.pages.dev |
e9ce0a6 to
d7da44d
Compare
|
🚀 Preview is available at https://5981a43f.enterprise-contract.pages.dev |
d7da44d to
8569b96
Compare
|
🚀 Preview is available at https://0fc38ee8.enterprise-contract.pages.dev |
8569b96 to
4e5d93c
Compare
|
🚀 Preview is available at https://3ae6f59b.enterprise-contract.pages.dev |
4e5d93c to
b88f076
Compare
|
🚀 Preview is available at https://3264d610.enterprise-contract.pages.dev |
b88f076 to
994354d
Compare
994354d to
fcd30b5
Compare
fcd30b5 to
3ad8f2b
Compare
|
🚀 Preview is available at https://ffdc1ecf.enterprise-contract.pages.dev |
3ad8f2b to
bcfadd1
Compare
|
🚀 Preview is available at https://b1164918.enterprise-contract.pages.dev |
This PR contains the following updates:
4.59.1→4.96.0Release Notes
cloudflare/workers-sdk (wrangler)
v4.96.0Compare Source
Minor Changes
#14087
e3c862aThanks @edmundhung! - Add support for the newweb_searchbinding kind.Cloudflare Web Search is a managed, zero-setup web discovery primitive for agents and Workers. Declare the binding as a single object in
wrangler.jsonc:{ "web_search": { "binding": "WEBSEARCH" } }There is exactly one shared web corpus, so there is no namespace, instance, or other field to specify -- only the variable name. The binding exposes a single
search()method that returns URLs and catalog metadata for a query. Web Search is discovery-only -- to read a result's content the caller invokes the globalfetch()API against the result'surl.The binding is always remote in local development: Miniflare proxies to the production Web Search service via the remote-bindings transport. Adds the
websearch.runOAuth scope towrangler login.Also adds a
wrangler websearch searchcommand for running ad-hoc queries from the CLI:--limitis optional (defaults to 10, capped at 20).--jsonprints the raw response; without it the results render as a pretty table.#13610
cbb39bdThanks @petebacondarwin! - Add support foragent_memorybindingsAgent Memory bindings allow Workers to connect to Cloudflare's Agent Memory service for storing and retrieving agent conversation state. This binding is remote-only, meaning it always connects to the Cloudflare API during
wrangler devrather than using a local simulation.To configure an
agent_memorybinding, add the following to yourwrangler.json:{ "agent_memory": [ { "binding": "MY_MEMORY", "namespace": "my-namespace" } ] }Wrangler will automatically provision the namespace during deployment if it does not already exist. Type generation via
wrangler typesis also supported.This change also adds the
agent-memory:writeOAuth scope to Wrangler's default login scopes, sowrangler logincan request the permissions needed to provision and manage Agent Memory namespaces.#13610
cbb39bdThanks @petebacondarwin! - Addwrangler agent-memory namespacecommandsThe following commands have been added for managing Agent Memory namespaces:
#14087
e3c862aThanks @edmundhung! - Add confirmation prompt towrangler containers images deletePreviously, running
wrangler containers images delete IMAGE:TAGwould delete the image immediately with no confirmation. The command now prompts for confirmation before deleting. Use-yor--skip-confirmationto bypass the prompt in non-interactive or scripted environments.#14087
e3c862aThanks @edmundhung! - Renamepipelinefield tostreamin pipeline bindings configurationThe
pipelinefield insidepipelinesbindings has been renamed tostreamto align with the updated API wire format. The oldpipelinefield is still accepted but deprecated and will emit a warning.Before:
After:
#14087
e3c862aThanks @edmundhung! - Allow pipeline, stream, and sink commands to resolve resources by name with pagination-aware lookups.#14087
e3c862aThanks @edmundhung! - Support deleting secrets viawrangler secret bulkYou can now delete secrets in bulk by setting their value to
nullin the JSON input file:{ "SECRET_TO_DELETE": null, "SECRET_TO_UPDATE": "new-value" }#14091
4c0da7bThanks @gpanders! - Add ProxyCommand support forwrangler containers sshwrangler containers sshnow automatically switches to a stdio proxy when invoked by OpenSSH'sProxyCommand, and--stdiocan force this mode. This lets users connect withssh <instance_id>when their SSH config uses Wrangler as the proxy command.#13892
13cbadbThanks @penalosa! - Remove the deprecatedexperimental.testModeoption fromunstable_devexperimental.testModepreviously only affected the defaultlogLevel(warnwhentestMode: true,logotherwise) and has been flagged for removal in its type-definition comment since it landed. It is now removed, andunstable_dev's default log level matcheswrangler dev's (log).Callers that explicitly passed
testMode: trueto get quieter logs should now setlogLevel: "warn"directly.Patch Changes
#14016
408432aThanks @petebacondarwin! - report all failing triggers from a single deploywrangler deploydeploys several kinds of trigger in parallel (routes, custom domains, schedules, queue producers/consumers, workflows). Previously, if one of those API calls failed, the first rejection short-circuited the rest, no other deployments were reported, and (in the case of custom-domain confirmation conflicts) some failures were silently logged to stdout without the deploy actually failing.wrangler deploynow waits for every trigger deployment to settle, prints every successfully-deployed target (so you still see what landed), and then throws a single error listing every trigger that failed.Note that this also turns the previously-silent "user declined to override a conflicting Custom Domain" case into a hard failure of
wrangler deploy, which matches what was always implied by the message ("Publishing to Custom Domain ... was skipped, fix conflict and try again").#14125
1103c07Thanks @dario-piotrowicz! - Bumprosie-skillsfrom0.7.6to0.8.1and bundle it into the Wrangler outputThe new version of
rosie-skillsis a pure-TypeScript rewrite that removes the previously necessary ~600kb WASM binary. The package now ships only JavaScript with one minimal dependencies (modern-tar).Additionally,
rosie-skillsis now bundled directly into Wrangler's distributable rather than kept as an external runtime dependency. This eliminates the supply chain concern raised in #14110: there is no separate package to resolve at install time, since all code is inlined into Wrangler's build output.#14135
5b5cbd3Thanks @Refaerds! - Update the generated type for browser bindings toBrowserRunWhen running
wrangler types, browser bindings were previously typed as the genericFetcher. They now generate the more specific and accurateBrowserRuntype.#14087
e3c862aThanks @edmundhung! - Bumprosie-skillspackage from 0.6.3 to 0.7.6#14087
e3c862aThanks @edmundhung! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#14076
97d7d81Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#14100
c647cccThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#14087
e3c862aThanks @edmundhung! - Disable Sentry error reporting by defaultWRANGLER_SEND_ERROR_REPORTSnow defaults tofalseinstead of prompting on every error. The current prompt produces too many false-positive reports. Users can still opt in explicitly by settingWRANGLER_SEND_ERROR_REPORTS=true.#14087
e3c862aThanks @edmundhung! - Fixwrangler setupfailing for Vite projects without a config filewrangler setup(andwrangler deploy --experimental-autoconfig) crashed with "Could not find Vite config file to modify" for Vite projects that don't have avite.config.jsorvite.config.ts. This affected 6 of the 16create-vitetemplates:vanilla,vanilla-ts,react-swc,react-swc-ts,lit, andlit-ts.Autoconfig now creates a minimal Vite config with the Cloudflare plugin when no config file exists, instead of failing. The file extension (
.tsor.js) is chosen based on whether the project has atsconfig.json.#14087
e3c862aThanks @edmundhung! - Show helpful message with URL when browser cannot be opened in headless/container environmentsPreviously, running
wrangler login(or any command that opens a browser) in headless Linux environments withoutxdg-openinstalled would crash with a confusing "A file or directory could not be found — Missing file or directory: xdg-open" error.Now wrangler catches the error and prints a clear warning with the URL so users can copy-paste it into a browser manually.
#14087
e3c862aThanks @edmundhung! -wrangler secrets-store secret createandsecret updatenow reject secret values larger than 64 KiB (65,536 bytes) with a clear error before calling the Cloudflare API. Previously the CLI accepted them, the secret appeared insecret list, and the failure surfaced later (and confusingly) at worker deploy time as a "secret doesn't exist" error against the binding. 64 KiB is the cap enforced by the API; the CLI now enforces it at the same boundary.#14059
b64b7e4Thanks @matingathani! - Fixwrangler kv bulk getprinting "Success!" to stdout, which corrupted JSON output when piped to tools likejq#14002
e4c8fd9Thanks @danyalahmed1995! - Show a clear error for invalid API token header charactersWrangler now detects API tokens containing characters that cannot be sent in the HTTP Authorization header before making an API request. This avoids a low-level ByteString conversion error and helps users recreate or recopy the token without printing the token value.
#14132
2dffeebThanks @dario-piotrowicz! - Adapt React Router autoconfig based onv8_middlewarefuture flagThe React Router autoconfig (
wrangler setup) now detects whetherv8_middleware: trueis set in the user'sreact-router.config.ts. When it is, the generatedworkers/app.tsuses a simplified fetch handler withoutAppLoadContextmodule augmentation, and the generatedapp/entry.server.tsxomits the_loadContextparameter. Whenv8_middlewareis not set, the existingAppLoadContextpattern withenv/ctxparams is preserved.This avoids breaking projects that use the
v8_middlewarefuture flag (which changes the context API fromAppLoadContexttoRouterContextProvider), while keeping the traditional pattern for projects that haven't opted in.#14133
59e43e4Thanks @matingathani! - Fixwrangler whoamiprinting a trailing period after the api-tokens URLThe message
To see token permissions visit https://...api-tokens.ended witha period that became part of the URL when clicked in terminals or GitHub Actions
output, causing a 404. The period is removed and a comma added before "visit"
so the sentence reads naturally without a trailing period on the URL.
Updated dependencies [
e3c862a,cbb39bd,7bb5c7a,e3c862a,97d7d81,c647ccc,e3c862a,e3c862a,972d13d]:v4.95.0Compare Source
Minor Changes
#14009
ca5b604Thanks @dario-piotrowicz! - Add telemetry for detecting whether AI coding agents have Cloudflare skills installedWrangler now includes a
currentAgentSkillsInstalledproperty in telemetry events that reports whether the current AI coding agent has Cloudflare skills present on disk. The value distinguishes between skills installed automatically by Wrangler ("automatic"), skills installed manually by the user ("manual"), no skills present (false), or no supported agent detected (null). Skill names are fetched from the GitHub Contents API with a 24-hour disk cache to avoid rate limits.#14014
d042705Thanks @emily-shen! - Add--x-deploy-helpersto gate an upcoming deploy path refactor.Patch Changes
#14003
c1fd2fdThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#13728
49c1a59Thanks @penalosa! - Rejectremote: falseon always-remote bindings (AI, AI Search, Media, Artifacts, Flagship, VPC Service, VPC Network)These binding types have no local simulator and the resource is fundamentally remote-only. Setting
remote: falsewas previously silently accepted but produced a non-functional binding.wrangler devnow fails with a clear error directing users to either remove theremotefield or set it totrue.#14039
fee1ce4Thanks @dario-piotrowicz! - Preserve--compatibility-flagsin the interactive deploy config flowWhen running
wrangler deploywithout a config file and going through the interactive setup flow, any--compatibility-flagspassed on the command line (e.g.--compatibility-flags=nodejs_compat) were lost in two places:wrangler.jsoncfile did not includecompatibility_flags.--compatibility-flags.Both are now fixed. Compatibility flags are persisted to the generated config and included in the suggested command.
#14010
b3962ffThanks @dario-piotrowicz! - Improve error messages for Pages CLI commandsError messages across
wrangler pagessubcommands (deploy, dev, secret, project, etc.) now provide clearer descriptions and actionable guidance. For example, instead of "Must specify a project name.", you'll now see "Missing Pages project name. Use --project-name or set the name in your wrangler.jsonc configuration file."#14011
420e457Thanks @petebacondarwin! - Warn when a remote-bindings request is blocked by Cloudflare AccessWhen
wrangler devis used with remote bindings and a request from the local remote-bindings proxy client to the remote workers.dev proxy server is blocked by Cloudflare Access (HTTP 403 with the Cloudflare Access block page), Wrangler now:CLOUDFLARE_ACCESS_CLIENT_ID/CLOUDFLARE_ACCESS_CLIENT_SECRET(Service Token credentials) or runcloudflared access loginto authenticate.InferenceUpstreamErrorfromenv.AI.run()) and any browser response piped back via a service binding.fetch().Previously the 403 was returned to user code with the full Access HTML, which both drowned out other logs and made it hard to tell that the failure was due to Cloudflare Access on workers.dev rather than a problem in the binding itself or the deployed proxy server. The detection runs inside the proxy client worker (which only ever talks to the remote-bindings proxy URL), so it does not trigger false positives on user-worker 403s.
#14044
8b1467eThanks @pombosilva! - Rename Workflow bindingscheduleproperty toschedulesThe
scheduleproperty on Workflow bindings introduced in #13467 has been renamed toschedulesto match the control plane API.Updated dependencies [
c1fd2fd,420e457]:v4.94.0Compare Source
Minor Changes
#13897
52e9082Thanks @dario-piotrowicz! - Add automatic Cloudflare skills installation for AI coding agentsWrangler now detects AI coding agents and offers to install Cloudflare skill files from the
cloudflare/skillsGitHub repository. Users are prompted once interactively; subsequent runs skip the prompt. Use--install-skillsto install without prompting.#13989
f598eacThanks @MattieTK! - Print a QR code alongside the tunnel URL when sharing via Cloudflare TunnelWhen a tunnel is started (via
wrangler dev --tunnelor the Vite plugin withtunnel: true), a scannable QR code is now printed to the terminal beneath the tunnel URL. This makes it easy to open the tunnel on a mobile device without manually copying the URL.The QR code uses Unicode block characters for a compact representation and is generated best-effort -- if generation fails for any reason, the tunnel URL is still displayed as before.
#13467
3a1fbedThanks @deloreyj! - Addscheduleproperty to Workflow bindings for cron-based triggeringWorkflow bindings in
wrangler.jsonnow accept an optionalschedulefield that configures one or more cron expressions to automatically trigger new workflow instances on a schedule.Multiple schedules can be provided as an array:
{ "workflows": [ { "binding": "MY_WORKFLOW", "name": "my-workflow", "class_name": "MyWorkflow", "schedule": ["0 9 * * 1", "0 17 * * 5"] } ] }The schedule is sent to the Workflows control plane on
wrangler deploy. Configuringscheduleon a workflow binding that references an externalscript_nameis an error — the schedule must be configured on the worker that defines the workflow.Patch Changes
#13993
0733688Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#14008
fc1f7b9Thanks @petebacondarwin! - Fix Access Service Token authentication for applications that only allow service tokensWhen using remote bindings against a Worker behind a Cloudflare Access application configured to only allow Service Auth tokens (no interactive user authentication), Wrangler previously ignored the
CLOUDFLARE_ACCESS_CLIENT_IDandCLOUDFLARE_ACCESS_CLIENT_SECRETenvironment variables and the request would fail with a 403.This happened because Wrangler detects Access by looking for a 302 redirect to
cloudflareaccess.com. A service-auth-only Access application has no interactive login path, so it responds with a hard 403 instead of redirecting. Wrangler concluded the domain was not behind Access and skipped attaching the service token headers entirely.The env-var check now runs before the Access detection step, so the configured service token credentials are always used when present.
#12277
8c569c6Thanks @penalosa! - Include column names in D1 SQL export INSERT statementsD1 SQL exports now include column names in INSERT statements (e.g.,
INSERT INTO "table" ("col1","col2") VALUES(...)). This ensures that exported SQL can be successfully imported even when the target table has columns in a different order than the original, which commonly occurs during iterative development when schemas evolve.Updated dependencies [
0733688,30657e1]:v4.93.1Compare Source
Patch Changes
#13978
fa1f61fThanks @sassyconsultingllc! - Bumpwsfrom 8.18.0 to 8.20.1 to address GHSA-58qx-3vcg-4xpxGHSA-58qx-3vcg-4xpx / CVE-2026-45736 reports an uninitialized-memory disclosure in
ws@<8.20.1when aTypedArrayis passed as the reason argument toWebSocket.close(). The fix shipped in ws@8.20.1 on 2026-05-12. This change bumps the workspace catalog entry so thatminiflare,wrangler, and@cloudflare/vite-pluginall pick up the patched release.#13977
2679e05Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#13984
7e40d98Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#13963
adc9221Thanks @gabivlj! - Preserve sibling container image tags during local dev cleanupWrangler now keeps other
cloudflare-devimage tags from the same dev session when multiple containers share a Dockerfile. Previously, duplicate-image cleanup could remove earlier container tags if Docker BuildKit produced the same image ID for each build.#13839
735852dThanks @matingathani! - fix: show actionable hint when/membershipsreturns a bad-credentials error (code 9106)Previously,
wranglerthrew a raw Cloudflare API error ("Missing X-Auth-Key, X-Auth-Email or Authorization headers") with no guidance. Now it emits aUserErrorexplaining that an environment variable such asCLOUDFLARE_API_TOKEN,CLOUDFLARE_API_KEY, orCLOUDFLARE_EMAILmay be set to an invalid value, and suggests runningwrangler logout/wrangler loginto re-authenticate.#13912
d803737Thanks @petebacondarwin! - Fix/cdn-cgi/*host validation incorrectly accepting subdomains of exact configured routesMiniflare's
/cdn-cgi/*host/origin validator was treating exact configured routes the same as wildcard configured routes, so a request whoseHostorOriginhostname was a subdomain of an exact route (e.g.sub.my-custom-site.comfor amy-custom-site.com/*route) was incorrectly accepted. Exact configured routes and the configuredupstreamhostname are now required to match the request hostname exactly. Subdomain matching is only applied to wildcard routes such as*.example.com/*. Localhost hostnames continue to be allowed as before.This affects
wrangler devand local development through@cloudflare/vite-plugin, both of which use Miniflare under the hood.#13919
c7eab7fThanks @petebacondarwin! - Fix the outboundCF-Workerheader reflecting the route pattern hostname instead of the parent zone, and falling back to<worker-name>.example.comundervite dev,vitest-pool-workers, andgetPlatformProxyTwo related issues affected the
CF-Workerheader on outbound subrequests in local development:@cloudflare/vite-plugin,@cloudflare/vitest-pool-workers, andgetPlatformProxy, the header fell back to<worker-name>.example.comeven whenrouteswere configured, becauseunstable_getMiniflareWorkerOptionsand the equivalentgetPlatformProxyworker-options path did not propagate azonevalue to Miniflare. This broke local development against services that reject unknownCF-Workerhosts (for example, Apple WeatherKit returns403 Forbidden).wrangler dev --local, when a route used thezone_namefield (for example{ pattern: "foo.example.com/*", zone_name: "example.com" }), the header was set to the pattern's hostname (foo.example.com) rather than the zone name (example.com). Production setsCF-Workerto the zone name that owns the Worker, so this was inconsistent with deployed behaviour.Both bugs are fixed: the new
unstable_getMiniflareWorkerOptions/getPlatformProxypath now propagates azonederived from the first configured route, and all four local-dev paths now prefer a route's explicitzone_nameover the pattern hostname when computing that zone. Whenzone_nameisn't set, the existing best-effort behaviour is preserved — forwrangler devthis meansdev.hostis still honoured as a local override and the pattern hostname is used as a final fallback. Resolving the parent zone forzone_id-only,custom_domain, or plain-string routes would require an API lookup, so locally we still approximate it with the pattern hostname.Note:
dev.hostis intentionally not consulted by theunstable_getMiniflareWorkerOptions/getPlatformProxypaths — thedevconfig block is specific towrangler dev.#13990
e04e180Thanks @petebacondarwin! - Improve the log message shown when an asset upload attempt fails and is retriedThe retry message now reports which attempt is being made (e.g.
Asset upload failed. Retrying... 1 of 5 attempts.), making it easier to gauge how close Wrangler is to exhausting its retry budget. The raw error object is no longer appended to this user-facing message; it is instead logged at debug level (visible viaWRANGLER_LOG=debug).#13954
62abf97Thanks @petebacondarwin! - Read the on-disk OAuth state lazily soCLOUDFLARE_API_TOKENfrom.envtakes priority correctlyWrangler previously read its OAuth state from the user auth config file (for example
~/.config/.wrangler/config/default.toml) eagerly at module-import time. That happens before.envfiles are loaded, so the in-memory state would always hold the OAuth tokens even when the user only wanted to authenticate viaCLOUDFLARE_API_TOKEN. If that stored OAuth token happened to be expired, Wrangler would try to refresh it (and fail), aborting the command withFailed to fetch auth token: 400 Bad RequestandNot logged in.— even though a valid API token was in scope.Wrangler now reads the auth config file on demand, after
.envhas been loaded. WhenCLOUDFLARE_API_TOKEN(orCLOUDFLARE_API_KEY+CLOUDFLARE_EMAIL) is present, the OAuth state on disk is no longer consulted, the OAuth refresh endpoint is no longer called, and the env-based token is used directly. Sibling-process refresh-token rotation is also handled naturally because every check reads the current file contents.Internally, the exported
reinitialiseAuthTokens()function is removed — there is no module-level OAuth cache left to invalidate.Fixes #13744.
#13951
e349fe0Thanks @sejoker! - Enforce minimum 60 second interval for R2 Data Catalog sinksR2 Data Catalog sinks now require a minimum
--roll-intervalof 60 seconds to prevent compaction issues in the R2 Data Catalog. This validation is applied when creating sinks viawrangler pipelines sinks createwith typer2-data-catalog, and during the interactivewrangler pipelines setupflow.Regular R2 sinks are not affected and can still use intervals as low as 10 seconds.
#13959
da0fa8cThanks @dmmulroy! - Recognize Artifacts repositories that are still being createdWrangler's Artifacts repo status type now accepts the
creatinglifecycle state alongside existing in-progress statuses.#13964
a5c9365Thanks @danielrs! - Use dedicated API endpoint forwrangler secret bulkwrangler secret bulknow uses a more efficient, dedicated API endpoint. This reduces the operation from 2 API calls to 1 and eliminates the risk of accidentally affecting non-secret bindings.Updated dependencies [
fa1f61f,2679e05,7e40d98,d803737,59cd880,e8c2031]:v4.93.0Compare Source
Minor Changes
#13901
aac7ca0Thanks @bghira! - Addwrangler ai models schemacommand for fetching model schemasYou can now run
wrangler ai models schema <model>to fetch the input and output schema for a Workers AI model from the public model catalog schema endpoint.#12656
ae047eeThanks @mikenomitch! - Add--containers-rollout=noneThis allows you to skip deploying a container. This is useful if you know that your container is not going to be updated or you don't have Docker locally, but still want to make changes to your Worker.
#13901
aac7ca0Thanks @bghira! - Addwrangler ai models listcommand for querying the Workers AI model catalogwrangler ai models listaccepts--search,--task,--author,--source, and--hide-experimental, matching the public model catalog search endpoint.Patch Changes
#13948
b25dc0dThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#13882
a4f22bcThanks @matingathani! - Throw a clear error when a D1 migration is cancelled instead of silently returning#13950
f78d435Thanks @dario-piotrowicz! - Improve the Docker CLI error message to be more actionable.Include a link to Docker installation docs, platform-specific instructions for starting the daemon, and guidance for alternative Docker-compatible CLIs.
#11896
c5c9e20Thanks @staticpayload! - Surface remote proxy session errorsWhen remote bindings fail to start, include the controller reason and root cause in the error message to make failures like missing
cloudflaredclearer.#13932
ebf4b24Thanks @zebp! - Fix local Workflow startup when compatibility flags includeexperimentalMiniflare now deduplicates compatibility flags for the internal Workflow engine service. This prevents
wrangler devfrom failing withCompatibility flag specified multiple times: experimentalwhen the user's Worker already enables that flag.#13929
895baf5Thanks @Caio-Nogueira! - Prompt to provision a workers.dev subdomain before deploying WorkflowsWrangler now checks for the account-level workers.dev subdomain when deploying Workflows, even if the Worker is not being published to workers.dev. If the subdomain has not been registered yet, Wrangler prompts to create one before calling the Workflows deploy API so users avoid an opaque server-side deployment failure.
#13930
7bcdf45Thanks @shiminshen! - Sweep stale.wrangler/tmp/*dirs left behind by abnormal exitsA
wrangler devsession creates.wrangler/tmp/bundle-*and.wrangler/tmp/dev-*directories at startup and removes them via asignal-exithook on graceful shutdown. When the process exited abnormally (SIGKILL, OOM, host crash) those directories were left behind and accumulated across sessions, slowing down dependency-walking tools that follow the bundle-emitted absolute-path imports.wranglernow sweeps entries in.wrangler/tmp/older than 24 hours when a new temporary directory is requested, bounding the leak regardless of how prior sessions exited.Updated dependencies [
b25dc0d,ebf4b24,b27eb18]:v4.92.0Compare Source
Minor Changes
#13670
506aa02Thanks @elithrar! - Addwrangler artifactscommands for managing Artifacts repos and repo tokens.This adds CLI support for the Artifacts control-plane workflows that were previously only available through the API. You can now list and inspect namespaces, create, list, inspect, and delete repos, and issue repo-scoped tokens when you need to authenticate git access.
The new commands support both human-readable output and
--jsonoutput so they fit existing Wrangler automation patterns.#13916
be8a98cThanks @emily-shen! - Add--keep-varsflag towrangler versions upload, matching the existing behavior inwrangler deploy. When set, environment variables configured via the dashboard are preserved rather than being deleted before the upload.Patch Changes
#13926
19ed49aThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#11471
3ff0a50Thanks @HW13! - Improvewrangler types --env-interfacefor multi-worker projects.Custom env interfaces generated by
wrangler typesno longer expand fromCloudflare.Env, avoiding some unintended type expansion when multiple workers' generated types are used together.#13910
bf688f7Thanks @timoconnellaus! - FixFailed to fetch auth token: 401 Unauthorizedfrom sibling-rotated refresh tokensrefreshTokenpreviously used the refresh token from module-levellocalState, which is populated once at startup and never re-read. OAuth refresh tokens are single-use, so when a sibling wrangler process (in another repo, another shell, or a parallel script) refreshes first, it rotates the token server-side and writes the new value to the shared config file (~/Library/Preferences/.wrangler/config/default.tomlon macOS). The long-lived process — typicallywrangler dev— then sends its stale in-memory token on the next refresh and gets401 Unauthorizedfromhttps://dash.cloudflare.com/oauth2/token, falling through to interactive login and timing out unattended.refreshTokennow callsreinitialiseAuthTokens()before exchanging, picking up the latest refresh token written by any sibling process. The previously emptycatch {}also now logs the underlying error at debug level so future refresh failures are diagnosable without source-diving.#13843
2e72c83Thanks @nzws! - Fixwrangler versions secret put/delete/bulkto preserve the existing version's placement settingsWhen creating a new version via
wrangler versions secret, the previous code only re-emitted a bare{ mode: "smart" }placement when the API reportedplacement_mode === "smart", dropping any other placement entirely. The new version is now created with the placement settings returned by the API, so placement settings survive a secret put/delete/bulk round-trip.#13908
802eaf4Thanks @shiminshen! - fix: stop rewriting query strings that happen to contain the requestHostwrangler devpreviously rewrote occurrences of the outer host insiderequest.url's query string. For example, a request to?echo=https%3A%2F%2Fdevelopment.test%2FpathwithHost: development.testwould be seen by the user worker as?echo=https%3A%2F%2Fproduction.test%2Fpath, silently mutating opaque application data such asredirect_urivalues in OAuth flows.The proxy worker now sets the internal
MF-Original-URLheader after its blanket host-rewriting pass over request headers, so the URL passed to the user worker preserves the original query string.#13827
8f5cdb1Thanks @greyvugrin! - Fix multi-environment warning when CLOUDFLARE_ENV is setCommands that warn when multiple environments are configured but none is specified (e.g.
wrangler deploy,wrangler secret put) were not accounting for theCLOUDFLARE_ENVenvironment variable when deciding whether to show the warning. This caused a misleading warning to appear even when the target environment was correctly specified viaCLOUDFLARE_ENV.Updated dependencies [
19ed49a]:v4.91.0Compare Source
Minor Changes
#13822
c8be316Thanks @edmundhung! - Add named tunnel support and tunnel shortcuts towrangler devYou can now use
wrangler dev --tunnel --tunnel-name <name>to start a dev session withConfiguration
📅 Schedule: (UTC)
* 0-3 * * *)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.