| name | geobench-run-codex |
| description | Run GeoBench with Codex CLI. Use when the user asks to run Codex, gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, or /geobench-run-codex. Shared reset, isolation, grade, and import live in the geobench-run skill.
|
GeoBench via Codex CLI
Read geobench-run first. --harness is codex.
Invoke
Runs in the geobench-agent container. Prompt on stdin: - after exec is the stdin slot, and docker run -i forwards the pipe into the container.
export MSYS_NO_PATHCONV=1
prompt="$(<"$root/tasks/$task/instruction.md")"
printf '%s' "$prompt" | docker run --rm -i -v geobench-agent-home:/home/agent \
--security-opt seccomp=unconfined \
-v "$(cygpath -w "$root/tasks/$task/workspace"):/work" \
-v "$(cygpath -w "$root/tasks/$task/instruction.md"):/instruction.md:ro" \
-w /work geobench-agent \
codex exec - --cd /work --model "<model-id>" \
-c 'model_reasoning_effort="high"' \
--approve-for-me --skip-git-repo-check --ephemeral --json
--approve-for-me is the unattended workspace-write mode. Do not add --sandbox; the container is the sandbox.
On the Windows Docker Desktop host, seccomp=unconfined is required because
Codex's bundled bwrap sandbox otherwise cannot create its user namespace.
This is a runtime option only; the container remains the unprivileged agent
user and sees only the mounted task workspace, instruction, and
geobench-agent-home. Use --rm and one task container at a time so completed
containers are pruned while the login volume remains available.
If the outer session, token budget, or provider session stops, keep the run
directory and its timing/log files as provenance, remove only the exact stale
task container, regenerate the tasks, and rerun this same model×harness combo.
Do not use its partial workspaces for another model; a valid queue checkpoint is
the matching finished verify artifact. The shared launcher detects provider
rate_limited responses and aborts the suite checkpoint without spending
retries on every remaining task.
Models
Ids that have completed a suite on this host:
| Model | Effort | --notes |
|---|
gpt-5.6-luna | max or high | effort max / effort high |
gpt-5.6-sol | high | effort high |
gpt-5.6-terra | high | effort high |
Pass the effort the user named. Do not inherit a leftover max when testing a smaller model.
Pitfalls
- Missing
- after exec → Codex does not take the piped prompt.
- Missing
-i on docker run → the pipe never reaches Codex, empty run.
- Combining
--approve-for-me with --sandbox → rejected by this Codex version.