{"record":{"id":"9f815539c5f333a6","repo":"paperclipai/paperclip","slug":"paperclip-execution-mode-must-be-kubernetes-or","errorCode":null,"errorMessage":"PAPERCLIP_EXECUTION_MODE must be \"kubernetes\" or \"any\" (got \"${raw}\").","messagePattern":"PAPERCLIP_EXECUTION_MODE must be \"kubernetes\" or \"any\" \\(got \"(.+?)\"\\)\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/execution-policy-bootstrap.ts","lineNumber":76,"sourceCode":"    .split(\",\")\n    .map((s) => s.trim())\n    .filter((s) => s.length > 0);\n  return items.length > 0 ? items : undefined;\n}\n\n/**\n * Parse the forced-execution-mode env config. Returns null when execution is\n * unrestricted (no env, or `PAPERCLIP_EXECUTION_MODE=any`). Throws on an\n * unrecognized mode so a misconfigured deployment fails loudly instead of\n * silently allowing local execution.\n */\nexport function parseExecutionPolicyBootstrapEnv(\n  env: ExecutionPolicyBootstrapEnv,\n): ExecutionPolicyBootstrap | null {\n  const raw = env.PAPERCLIP_EXECUTION_MODE?.trim();\n  if (!raw || raw === \"any\") return null;\n  if (raw !== \"kubernetes\") {\n    throw new Error(\n      `PAPERCLIP_EXECUTION_MODE must be \"kubernetes\" or \"any\" (got \"${raw}\").`,\n    );\n  }\n\n  const kubernetesConfig: KubernetesEnvironmentConfigInput = {\n    // inCluster defaults to false (matches the plugin schema default); an\n    // in-cluster cloud deployment sets PAPERCLIP_K8S_IN_CLUSTER=true.\n    inCluster: parseBool(env.PAPERCLIP_K8S_IN_CLUSTER) ?? false,\n  };\n\n  const backend = env.PAPERCLIP_K8S_BACKEND?.trim();\n  if (backend) {\n    if (backend !== \"job\" && backend !== \"sandbox-cr\") {\n      throw new Error(\n        `PAPERCLIP_K8S_BACKEND must be \"job\" or \"sandbox-cr\" (got \"${backend}\").`,\n      );\n    }\n    kubernetesConfig.backend = backend;","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/execution-policy-bootstrap.ts#L58-L94","documentation":"Mode guard in parseExecutionPolicyBootstrapEnv: PAPERCLIP_EXECUTION_MODE is set but is neither 'kubernetes' nor 'any'. An unrecognized mode fails startup loudly so a typo cannot silently fall back to allowing local execution.","triggerScenarios":"Thrown at server/src/services/execution-policy-bootstrap.ts:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set PAPERCLIP_EXECUTION_MODE to \"kubernetes\" or \"any\"."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}