{"record":{"id":"7e87bddac80895a4","repo":"pulumi/pulumi","slug":"getting-environment-draft-definition-w-7e87bd","errorCode":null,"errorMessage":"getting environment draft definition: %w","messagePattern":"getting environment draft definition: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/cmd/esc/cli/env_set.go","lineNumber":163,"sourceCode":"\t\t\t\t}\n\t\t\t\tif err = yaml.Unmarshal(bytes, &yamlValue); err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"internal error: marshaling secret: %w\", err)\n\t\t\t\t}\n\t\t\t\tyamlValue = *yamlValue.Content[0]\n\t\t\t}\n\n\t\t\tvar def []byte\n\t\t\tvar tag string\n\t\t\tif draft != \"\" && draft != \"new\" {\n\t\t\t\tdef, tag, err = env.esc.client.GetEnvironmentDraft(\n\t\t\t\t\tctx,\n\t\t\t\t\tref.orgName,\n\t\t\t\t\tref.projectName,\n\t\t\t\t\tref.envName,\n\t\t\t\t\tdraft,\n\t\t\t\t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"getting environment draft definition: %w\", err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdef, tag, _, err = env.esc.client.GetEnvironment(ctx, ref.orgName, ref.projectName, ref.envName, \"\", false)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"getting environment definition: %w\", err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar docNode yaml.Node\n\t\t\tif err := yaml.Unmarshal(def, &docNode); err != nil {\n\t\t\t\treturn fmt.Errorf(\"unmarshaling environment definition: %w\", err)\n\t\t\t}\n\t\t\tif docNode.Kind != yaml.DocumentNode {\n\t\t\t\tdocNode = yaml.Node{\n\t\t\t\t\tKind:    yaml.DocumentNode,\n\t\t\t\t\tContent: []*yaml.Node{{}},\n\t\t\t\t}\n\t\t\t}","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/pulumi/pulumi/blob/793f7b2e160db4321fb7fb6b0607461e01cb251e/pkg/cmd/esc/cli/env_set.go#L145-L181","documentation":"With `--draft=<change-request-id>`, `esc env set` fetches the draft's current definition via GetEnvironmentDraft before applying the change. If that API call fails (network issue, bad draft ID, insufficient permissions, deleted draft), the error is wrapped with this message.","triggerScenarios":"`esc env set <env> <path> <value> --draft <id>` where the Pulumi Cloud API returns an error for GetEnvironmentDraft: nonexistent or already-merged change request ID, expired/invalid auth token, or connectivity failure.","commonSituations":"Referencing a draft that was merged or deleted by a teammate; running in CI with a token lacking access to the org/project; offline or behind a proxy.","solutions":["Verify the draft/change-request ID exists with `esc env draft list` (or the web UI)","Run `esc login` / `pulumi login` to refresh credentials and check org access","Check network connectivity/VPN/proxy to the Pulumi Cloud API","Drop `--draft` to set the value directly against the current environment"],"exampleFix":"// before\nesc env set my-org/my-env/k v --draft 42   // draft already merged\n// after\nesc env set my-org/my-env/k v              // set against current environment\n","handlingStrategy":"try-catch","validationCode":"// pre-check draft existence before mutating\n_, _, err := escClient.GetEnvironmentDraft(ctx, org, project, env, draftID)\nif err != nil { return fmt.Errorf(\"draft %s unavailable: %w\", draftID, err) }","typeGuard":null,"tryCatchPattern":"out, err := runEscCmd(\"env\", \"set\", env, path, value, \"--draft\", id)\nif err != nil && strings.Contains(err.Error(), \"getting environment draft definition\") {\n    return runEscCmd(\"env\", \"set\", env, path, value) // fall back to direct set\n}","preventionTips":["Verify the draft ID is still open before scripting against it","Ensure `esc login` credentials cover the org/project","Add network retry logic around esc commands in CI"],"tags":["cli","network","api","esc","draft"],"backgroundTag":"api-request-failed","analyzedSha":"793f7b2e160db4321fb7fb6b0607461e01cb251e","analyzedAt":"2026-08-31T09:36:43.099Z","schemaVersion":2},"datasetVersion":"2026-09-01T08:17:40.651Z"}