{"record":{"id":"47f067339a27c643","repo":"cloudflare/cloudflared","slug":"v-error","errorCode":null,"errorMessage":"v.Error","messagePattern":"v\\.Error","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cloudflared/updater/workers_service.go","lineNumber":93,"sourceCode":"\n\treq.URL.RawQuery = q.Encode()\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tif resp.StatusCode != 200 {\n\t\treturn nil, fmt.Errorf(\"unable to check for update: %d\", resp.StatusCode)\n\t}\n\n\tvar v VersionResponse\n\tif err := json.NewDecoder(resp.Body).Decode(&v); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif v.Error != \"\" {\n\t\treturn nil, errors.New(v.Error)\n\t}\n\n\tversionToUpdate := \"\"\n\tif v.ShouldUpdate {\n\t\tversionToUpdate = v.Version\n\t}\n\n\treturn NewWorkersVersion(v.URL, versionToUpdate, v.Checksum, s.targetPath, v.UserMessage, v.IsCompressed), nil\n}\n","sourceCodeStart":75,"sourceCodeEnd":103,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/cmd/cloudflared/updater/workers_service.go#L75-L103","documentation":"cloudflared's auto-updater calls a Workers service that returns a VersionResponse JSON; if the server includes a non-empty `error` field, the client surfaces it verbatim as this error (the field's value is the message). It means the update-check service itself rejected or failed the request server-side.","triggerScenarios":"The Workers update service responds with JSON like {\"error\":\"...\"} — e.g. during service incidents, malformed client request metadata, or unsupported client versions.","commonSituations":"Cloudflare-side update service outages; proxy/firewall rewriting the response; running a very old cloudflared whose request no longer satisfies the service contract.","solutions":["Retry later; this is typically a server-side condition","Check your proxy/firewall is not intercepting the update endpoint's JSON","Upgrade cloudflared manually (download the release binary) if the running version is old","Disable automatic updates if unattended (e.g. --no-autoupdate or TUNNEL_NO_AUTOUPDATE)"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// tolerate transient update-service errors\nif err := updater.Check(ctx); err != nil {\n    log.Warn().Err(err).Msg(\"update check failed; continuing with current version\")\n    // schedule a retry with backoff; do not fail the tunnel\n}","preventionTips":["Run cloudflared with --no-autoupdate in unattended/production settings","Monitor Cloudflare status for updater-service incidents","Manually upgrade if the running version is very old","Ensure proxies don't rewrite JSON responses from the update endpoint"],"tags":["auto-update","api","cloudflared"],"backgroundTag":"upstream-api-error","analyzedSha":"2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f","analyzedAt":"2026-09-06T04:14:33.757Z","contentChangedAt":"2026-09-06T04:14:33.757Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}