{"record":{"id":"4ef9ee4ba2c9fcbe","repo":"paperclipai/paperclip","slug":"low-trust-inline-sensitive-env-denied","errorCode":"low_trust_inline_sensitive_env_denied","errorMessage":"Low-trust execution cannot use inline sensitive env value ${source}.${key}","messagePattern":"Low-trust execution cannot use inline sensitive env value (.+?)\\.(.+?)","errorType":"http","errorClass":"HttpError","httpStatus":422,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":957,"sourceCode":"    errorFamily === \"provider_quota\"\n    ? {\n        errorFamily,\n        retryNotBefore: readTransientRetryNotBeforeFromRun(run),\n      }\n    : null;\n}\n\n\nfunction isSpawnLikeFailureMessage(value: unknown) {\n  if (typeof value !== \"string\") return false;\n  return /failed to start command|spawn\\b|\\bENOENT\\b/i.test(value);\n}\n\n// A sandbox provider plugin's worker can be briefly down during its own\n// restart window (e.g. a rolling deploy of the plugin worker process). Lease\n// acquisition fails immediately in that window, but the condition is\n// transient and self-healing, so it must be treated as retryable\n// infrastructure rather than a terminal setup failure. See\n// resolveSandboxProviderPlugin's \"worker_unavailable\" message in\n// environment-runtime.ts (\":808\"), e.g. 'Sandbox provider \"kubernetes\" is\n// installed via plugin \"acme.kubernetes-sandbox-provider\", but its worker is\n// not running.'\n//\n// This is anchored on both \"is installed via plugin\" and \"but its worker is\n// not running\" so it does not also match plugin-environment-driver.ts's\n// unrelated, permanent \"provider not installed\" message ('Sandbox provider\n// \"X\" is not installed or its plugin worker is not running.'), which\n// coincidentally contains the same \"worker is not running\" substring but\n// describes a terminal condition that must not be retried.\nfunction isSandboxProviderWorkerUnavailableFailureMessage(value: unknown) {\n  if (typeof value !== \"string\") return false;\n  return /sandbox provider .* is installed via plugin .* but its worker is not running/i.test(\n    value,\n  );\n}\n","sourceCodeStart":939,"sourceCodeEnd":975,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L939-L975","documentation":"Trust-policy enforcement in assertLowTrustEnvConfigAllowed: an environment config destined for a low_trust_review run declares an inline (plaintext) sensitive env value at source.key (e.g. environment.env / agent.env / project.env / routine.env). Low-trust executions may only reference scoped secret bindings, not inline values, so launch preparation aborts.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:890 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Bind the sensitive value as a secret reference instead of an inline env value for low-trust execution."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}