{"record":{"id":"c593a4fe10e2c050","repo":"windmill-labs/windmill","slug":"failed-to-upload-scripts-to-temp-storage-backend-c593a4","errorCode":null,"errorMessage":"Failed to upload scripts to temp storage (backend may be too old): ${e}. Locks will be generated using deployed script versions only — locally modified relative imports may not be reflected.","messagePattern":"Failed to upload scripts to temp storage \\(backend may be too old\\): (.+?)\\. Locks will be generated using deployed script versions only — locally modified relative imports may not be reflected\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/src/commands/script/script.ts","lineNumber":1816,"sourceCode":"    tree.setWorkspaceDeps(rawWorkspaceDependencies);\n    for (const e of Object.keys(elems)) {\n      await generateScriptMetadataInternal(\n        e,\n        workspace,\n        opts,\n        true, // dryRun: populate tree\n        true,\n        rawWorkspaceDependencies,\n        codebases,\n        false,\n        tree,\n      );\n    }\n    tree.propagateStaleness();\n    try {\n      await uploadScripts(tree, workspace);\n    } catch (e) {\n      log.warn(\n        colors.yellow(\n          `Failed to upload scripts to temp storage (backend may be too old): ${e}. ` +\n            `Locks will be generated using deployed script versions only — locally modified ` +\n            `relative imports may not be reflected.`,\n        ),\n      );\n    }\n    for (const e of Object.keys(elems)) {\n      await generateScriptMetadataInternal(\n        e,\n        workspace,\n        opts,\n        false,\n        true,\n        rawWorkspaceDependencies,\n        codebases,\n        false,\n        tree,","sourceCodeStart":1798,"sourceCodeEnd":1834,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/script/script.ts#L1798-L1834","documentation":"During lock generation, wmill uploads local scripts (dependency tree) to temporary storage so locks can include locally modified relative imports. If the upload fails — typically because the connected backend predates the temp-storage endpoint — it falls back to generating locks from deployed script versions only and warns that local modifications to relative imports may not be reflected.","triggerScenarios":"Running `wmill generate-metadata` (or the flow-lock generation path) against a self-hosted backend older than the temp-storage feature; an error thrown by uploadScripts (network, permissions, API mismatch).","commonSituations":"Self-hosted Windmill instances lagging behind the CLI version; partially upgraded clusters; transient API errors during generation.","solutions":["Upgrade the Windmill backend to a version matching the CLI so temp script storage is supported","Regenerate metadata after upgrading if local relative imports must be reflected in locks","If you have locally modified relative imports, push those dependencies first, then regenerate locks","Check connectivity/auth if the cause is not an old backend"],"exampleFix":"// before\n# docker.getwindmill.com image: ghcr.io/windmill-labs/windmill:v1.400 (too old)\n// after\n# ghcr.io/windmill-labs/windmill:latest  # upgrade backend, then\nwmill generate-metadata","handlingStrategy":"fallback","validationCode":"const v = await wmill.getBackendVersion(); if (semver.lt(v, MIN_TEMP_STORAGE_VERSION)) console.warn('locks will use deployed versions');","typeGuard":null,"tryCatchPattern":"try { await generateMetadata(); } catch (e) { console.warn('falling back to deployed-version locks'); }","preventionTips":["align backend/CLI versions","upgrade self-hosted","push deps before locking on old backends"],"tags":["cli","backend-compatibility","lockfile"],"backgroundTag":"backend-too-old","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}