Code evaluator creation fails when Aqua injects LD_PRELOAD into ace-backend
Last updated: July 17, 2026
Symptom
On a self-hosted LangSmith deployment where the Aqua runtime security agent is active, creating a code evaluator fails in the UI. The evaluator config and ClickHouse are fine; the failure happens at creation time. This starts with Helm chart 0.13.38 and continues on later releases.
Cause
Code evaluators are validated inside the ace-backend service, which runs Deno in a locked-down sandbox. The sandbox grants only the subprocess permission needed to spawn the deno binary, not unrestricted run permissions.
Chart 0.13.38 ships a newer Deno that adds a security check: Deno refuses to spawn a subprocess when LD_PRELOAD is set in the environment unless the process has unrestricted run permissions. The ace-backend sandbox does not grant those, so the spawn is blocked and evaluator creation fails.
The Aqua agent injects LD_PRELOAD into every pod it monitors. Existing guidance to set AQUA_SKIP_LD_PRELOAD=true covers ClickHouse only, so ace-backend still gets LD_PRELOAD injected and hits the Deno check.
Resolution
Tell Aqua to skip LD_PRELOAD injection for ace-backend by setting AQUA_SKIP_LD_PRELOAD=true on that deployment. The variable is read by the Aqua agent, not by any LangSmith service, so the same mechanism that already works for ClickHouse works here.
On Helm, add it under aceBackend.deployment.extraEnv in your values file:
aceBackend:
deployment:
extraEnv:
- name: AQUA_SKIP_LD_PRELOAD
value: "true"Restart ace-backend so Aqua re-reads the environment when it attaches to the pod, then retry creating the evaluator.