{"record":{"id":"6f7697b539833524","repo":"dagger/dagger","slug":"incompatible-engine-version-s","errorCode":null,"errorMessage":"incompatible engine version %s","messagePattern":"incompatible engine version (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/client/client.go","lineNumber":308,"sourceCode":"\t\t}\n\t\treturn c, nil\n\t}\n\n\t// Check if any of the upstream cache importers/exporters are enabled.\n\t// Note that this is not the cache service support in engine/cache/, that\n\t// is a different feature which is configured in the engine daemon.\n\tc.upstreamCacheImportOptions, c.upstreamCacheExportOptions, err = allCacheConfigsFromEnv()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cache config from env: %w\", err)\n\t}\n\n\tc.stableClientID = GetHostStableID(slog)\n\n\tif err := c.startEngine(connectCtx, params); err != nil {\n\t\treturn nil, fmt.Errorf(\"start engine: %w\", err)\n\t}\n\tif !engine.CheckVersionCompatibility(engine.NormalizeVersion(c.bkVersion), engine.MinimumEngineVersion) {\n\t\treturn nil, fmt.Errorf(\"incompatible engine version %s\", engine.NormalizeVersion(c.bkVersion))\n\t}\n\n\tdefer func() {\n\t\tif rerr != nil {\n\t\t\tc.bkClient.Close()\n\t\t}\n\t}()\n\n\tif err := c.startSession(connectCtx); err != nil {\n\t\treturn nil, fmt.Errorf(\"start session: %w\", err)\n\t}\n\n\tdefer func() {\n\t\tif rerr != nil {\n\t\t\tc.sessionSrv.Stop()\n\t\t}\n\t}()\n","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/engine/client/client.go#L290-L326","documentation":"After the engine starts, Connect compares the engine's reported buildkit version (c.bkVersion) against engine.MinimumEngineVersion using CheckVersionCompatibility. If the running engine is older than the minimum the client requires, Connect refuses to proceed with this message embedding the engine's normalized version. This guards against protocol incompatibilities between a new CLI and an old persisted engine.","triggerScenarios":"dagger.Connect() against a long-lived engine container/daemon that predates the current CLI's minimum version — typically after upgrading the dagger CLI without upgrading the engine.","commonSituations":"CLI upgraded (brew/npm/ci image bump) while an old engine pod/container still runs in Docker; pinned engine image versions in CI older than MinimumEngineVersion; stale cached engine in ~/.cache/dagger.","solutions":["Upgrade the engine: dagger engine update (or stop the old one: dagger engine stop --all, then rerun).","Downgrade the dagger CLI to match the running engine version if the engine can't be upgraded.","In CI, remove the pinned/stale engine image so a matching engine is provisioned.","Check versions with dagger version (CLI) and dagger query inside the session, or docker ps for the engine container's image tag."],"exampleFix":"// before (shell)\n# CLI v0.15.x talking to engine from v0.9.x\n// after\ndagger engine stop --all && dagger engine update && dagger version","handlingStrategy":"fallback","validationCode":"// shell preflight\nout, _ := exec.Command(\"docker\", \"ps\", \"--format\", \"{{.Image}}\").CombinedOutput()\nif !strings.Contains(string(out), \"dagger/engine\") || strings.Contains(string(out), \"v0.9\") {\n    // stale/old engine detected; refresh before connecting\n}","typeGuard":null,"tryCatchPattern":"if _, err := dagger.Connect(ctx); err != nil && strings.Contains(err.Error(), \"incompatible engine version\") {\n    exec.Command(\"dagger\", \"engine\", \"stop\", \"--all\").Run()\n    exec.Command(\"dagger\", \"engine\", \"update\").Run()\n    // then reconnect\n}","preventionTips":["After every CLI upgrade, run `dagger engine update` (or stop old engines).","In CI, don't cache/pin old engine containers; let each run provision a matching one.","Compare `dagger version` CLI vs engine on a schedule in long-lived hosts."],"tags":["go","versioning","engine","compatibility"],"backgroundTag":"engine-version-mismatch","analyzedSha":"82ba2681dbe30d3547a1dc50ea495900ab5b6047","analyzedAt":"2026-09-05T07:21:37.930Z","contentChangedAt":"2026-09-05T07:21:37.930Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}