{"record":{"id":"00cfba7a7fcfb2e6","repo":"zed-industries/zed","slug":"no-eval-cli-binary-provided-either-pass-binary-pa","errorCode":null,"errorMessage":"No eval-cli binary provided. Either pass binary_path=/path/to/target/release/eval-cli, set download_url=/EVAL_CLI_DOWNLOAD_URL, or set --ae EVAL_CLI_CONTAINER_PATH=/path/inside/container.","messagePattern":"No eval-cli binary provided\\. Either pass binary_path=/path/to/target/release/eval-cli, set download_url=/EVAL_CLI_DOWNLOAD_URL, or set --ae EVAL_CLI_CONTAINER_PATH=/path/inside/container\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"crates/eval_cli/zed_eval/agent.py","lineNumber":127,"sourceCode":"            await self.exec_as_root(\n                environment,\n                command=\"chmod +x /usr/local/bin/eval-cli && eval-cli --help\",\n            )\n            return\n\n        if self._download_url:\n            await self.exec_as_root(\n                environment,\n                command=(\n                    f\"curl -fsSL {shlex.quote(self._download_url)} \"\n                    \"-o /usr/local/bin/eval-cli && \"\n                    \"chmod +x /usr/local/bin/eval-cli && \"\n                    \"eval-cli --help\"\n                ),\n            )\n            return\n\n        raise ValueError(\n            \"No eval-cli binary provided. \"\n            \"Either pass binary_path=/path/to/target/release/eval-cli, \"\n            \"set download_url=/EVAL_CLI_DOWNLOAD_URL, \"\n            \"or set --ae EVAL_CLI_CONTAINER_PATH=/path/inside/container.\"\n        )\n\n    async def _install_node(self, environment: BaseEnvironment) -> None:\n        \"\"\"Install Node.js from official binary tarballs.\n\n        Uses the musl build on Alpine and the glibc build elsewhere.\n        Skips if node is already on PATH.\n        \"\"\"\n        try:\n            await self.exec_as_root(\n                environment,\n                command=(\n                    \"if command -v node >/dev/null 2>&1; then \"\n                    '  echo \"Node.js already available: $(node --version)\"; '","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/eval_cli/zed_eval/agent.py#L109-L145","documentation":"Raised at the end of the eval-cli provisioning chain in agent.py: none of the three ways to get the binary into the container was configured — no EVAL_CLI_CONTAINER_PATH (already mounted in the image), no binary_path (uploaded from the host), and no download_url (fetched with curl inside the container). The agent refuses to continue because the container would end up without eval-cli.","triggerScenarios":"Starting the agent with all three options unset — e.g. relying on a default that doesn't exist, misnamed env vars so none is picked up, or config copied from a setup that used a different channel.","commonSituations":"First runs from a new shell with no EVAL_CLI_* vars exported; typos in variable names; switching between dev (local build) and CI (download URL) setups without updating config.","solutions":["Set binary_path to a built binary: `cargo build --release -p eval_cli`, then pass target/release/eval-cli","Or set download_url=/EVAL_CI_DOWNLOAD_URL to fetch a published binary inside the container","Or set --ae EVAL_CLI_CONTAINER_PATH=/path/inside/container when the image already ships the binary","Check for typos in the variable names and dump the effective agent config"],"exampleFix":"# before\nrun(...)   # no channel configured → ValueError\n\n# after\nrun(..., binary_path=\"target/release/eval-cli\")","handlingStrategy":"validation","validationCode":"if not (binary_path or download_url or container_path):\n    raise SystemExit(\n        \"configure one of: binary_path=..., download_url=..., EVAL_CLI_CONTAINER_PATH=...\"\n    )","typeGuard":null,"tryCatchPattern":"try:\n    await agent.ensure_binary(environment)\nexcept ValueError as e:\n    print(e)  # the message lists all three supported channels\n    raise","preventionTips":["Standardize one provisioning channel in the runner template (binary_path for dev, download_url for CI)","Run env | grep EVAL_CLI before long jobs to confirm the vars are exported"],"tags":["python","eval-cli","configuration","container"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}