zed-industries/zed · error · RuntimeError
Failed to install or start judge proxy
Error message
Failed to install or start judge proxy (exit {result.return_code}){detail} What it means
verifier.py installs and starts the judge proxy inside the target container by exec'ing a root shell script (which even tails /tmp/zed-judge-proxy.log on failure). If that exec returns a non-zero exit code, this RuntimeError is raised with the combined stdout/stderr plus the proxy log tail as detail — the install or the startup failed inside the container.
Solutions
- Read the detail suffix — it includes the script output and the last lines of /tmp/zed-judge-proxy.log
- Exec into the container and re-run the install script manually to reproduce
- Verify egress rules allow the install step, or pre-bake the proxy into the image
- Confirm the volume carrying the proxy is mounted at the path the script expects
Example fix
# before # RuntimeError: Failed to install or start judge proxy (exit 1): ... # after — reproduce inside the container pier exec <job> --user-root -- /bin/sh -c 'sh -x /path/to/install-proxy.sh; tail -20 /tmp/zed-judge-proxy.log'
Defensive patterns
Strategy: try-catch
Validate before calling
result = container.exec(["python3", "--version"], user="root")
if result.return_code != 0:
raise SystemExit("container lacks python3; pre-bake it into the image or fix the base image") Try / catch
try:
start_judge_proxy(container, env)
except RuntimeError as err:
if "judge proxy" in str(err):
log_tail = container.exec(["tail", "-20", "/tmp/zed-judge-proxy.log"], user="root").stdout
raise RuntimeError(f"{err}\nproxy log:\n{log_tail}") from err
raise Prevention
- Pre-bake the judge proxy into the container image instead of installing at runtime
- Pin the volume mount path that carries the proxy payload
- Keep an egress allowlist that covers the install step's hosts
When it happens
Trigger: The container has no egress so the install step's downloads fail; the proxy script or binary is missing from the mounted volume; python3 absent or wrong architecture in the container; the proxy starts then immediately exits, leaving a log tail in the message.
Common situations: Sandboxed eval containers with blocked networking; volume mounts misconfigured so the proxy payload path is empty; base image changes dropping python3; disk-full in /tmp.
Related errors
- ZedPierAgent requires EVAL_CLI_CONTAINER_PATH
- Cannot start default prettier due to its installation…
- debugpy installation failed (could not fetch Debugpy's…
- Default prettier is not installed and cannot be started
- failed to change ownership for zed_remote_server via chown
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/da531263a024b21b.
Report an issue: GitHub.
Appendix: source
Thrown at crates/eval_cli/zed_eval/verifier.py:57
"ensure-judge-proxy\n"
"python3 - <<'ZED_PROXY_CHECK_EOF'\n"
"import os, socket\n"
"port = int(os.environ.get('ZED_JUDGE_PROXY_PORT', '8089'))\n"
"with socket.create_connection(('127.0.0.1', port), timeout=5):\n"
" pass\n"
"ZED_PROXY_CHECK_EOF\n"
"if [ -f /tmp/zed-judge-proxy.log ]; then "
"tail -2 /tmp/zed-judge-proxy.log; fi\n"
),
user="root",
env=env,
)
if result.return_code != 0:
output = "\n".join(
part for part in (result.stdout, result.stderr) if part
).strip()
detail = f": {output}" if output else ""
raise RuntimeError(
f"Failed to install or start judge proxy (exit {result.return_code}){detail}"
)
View on GitHub (pinned to f4178619ac)