Summary
Track an evaluation of OpenAI Codex (-a codex) with GPT-5.6 Sol (-m gpt-5.6-sol) against Enterprise-Bench/l1-l2-bench on Harbor Hub.
Harness: Harbor (job runner, Docker trials, judge, jobs artifacts)
Agent under test: OpenAI Codex CLI (@openai/codex, installed per trial container)
Dataset: Enterprise-Bench/l1-l2-bench (14 tasks)
Primary model: gpt-5.6-sol (flagship of the GPT-5.6 family)
Judge: OpenAI GPT-5 via OPENAI_API_KEY (required for all agents)
Sister plan: Grok Build + grok-4.5 → #3
Why this run
- Add a Codex + GPT-5.6 Sol data point next to existing Claude Code / DevRev Computer (and planned Grok) jobs.
- Validate Harbor’s built-in
codex adapter with Enterprise-Bench MCP servers (crm / pm / file-server).
- Produce submit-ready results per
docs/submit-results.md.
Architecture
Harbor Hub dataset (Enterprise-Bench/l1-l2-bench)
↓
Harbor job runner (Docker trials, scoring, jobs/)
↓ -a codex -m gpt-5.6-sol
OpenAI Codex CLI (npm @openai/codex in container)
↓ MCP (host.docker.internal:8011–8013)
Maple Payments synthetic data
↓ OPENAI_API_KEY
GPT-5 judge → reward 0.0 | 1.0
Model choice (GPT-5.6 family)
GPT-5.6 is a family. Codex CLI model ids:
| Model |
Role |
Plan usage |
gpt-5.6-sol |
Flagship coding / agentic |
Primary eval |
gpt-5.6-terra |
Balanced / lower cost |
Optional cost ablation after Sol |
gpt-5.6-luna |
Fastest / cheapest |
Optional efficiency ablation |
gpt-5.6 |
Generic alias in some docs |
Prefer explicit gpt-5.6-sol for reproducibility |
Harbor strips an optional provider prefix: -m openai/gpt-5.6-sol → gpt-5.6-sol.
Default Harbor Codex reasoning flag: model_reasoning_effort=high. Document any override (--ak reasoning_effort=…). Prefer --ak web_search=disabled for closed-book parity with the Grok plan’s default.
Codex adapter facts (Harbor)
- Agent name:
codex (available in Harbor 0.18+ — no special upgrade required, unlike grok-build).
- Install:
npm install -g @openai/codex@latest inside trial (nvm/node 22 path on Debian images).
- Run:
codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --model <id> --json -- …
- MCP servers from
--mcp-config written to $CODEX_HOME/config.toml as [mcp_servers.*].
- Trajectories: ATIF supported; sessions copied to
agent/sessions then converted.
Authentication
Default (recommended for submit-ready runs): API key
export OPENAI_API_KEY=sk-...
# Same key is used for:
# 1) Codex agent (Harbor writes into container auth.json)
# 2) LLM judge (verifier)
Always forward into the agent sandbox:
--ae OPENAI_API_KEY=$OPENAI_API_KEY
Optional: ChatGPT / Codex subscription via auth.json
Harbor Codex defaults to API key. Opt into host login:
export CODEX_FORCE_AUTH_JSON=1
# or
export CODEX_AUTH_JSON_PATH=$HOME/.codex/auth.json
Still pass OPENAI_API_KEY for the judge unless judge env is separately provisioned.
Recommendation: use API key for reproducible public submissions.
Prerequisites
| Requirement |
Notes |
| Harbor CLI |
0.18+ already has codex |
| Docker Desktop |
~2 GB RAM + 2 CPUs per trial; on ~8 GiB Docker use -n 3 max |
| Local base image |
make build-image → enterprise-bench/conversational-base:latest |
| MCP servers |
make start-servers (REST 9001–9003 + MCP 8011–8013) |
OPENAI_API_KEY |
Agent (default path) + judge |
Known gotchas
make install before make setup — setuptools flat-layout on data/ / images/.
- Base image built locally — not a registry pull problem.
- MCP 421 — add
allowed_hosts=["*"] to each mcp.run(...), restart servers; verify Host-header probe returns 200.
- Ports 801x MCP / 900x REST are both correct.
- First trial slower: Codex npm install + cold model.
- Missing
--ae OPENAI_API_KEY → agent or judge 401.
- Prefer explicit
gpt-5.6-sol over bare gpt-5.6 for reported results.
- OOM at high concurrency → lower
-n.
Execution plan
Phase 0 — Tooling
harbor --version
harbor run -h | rg -i codex
harbor auth status
Phase 1 — Dataset + environment
# Preferred local tree (MCP fix already applied on nimit’s machine):
cd ~/Desktop/nitmit-dev/harbor-testing-benchmarks/enterprise-bench/l1-l2-bench
# Or fresh Hub download:
# harbor download enterprise-bench/l1-l2-bench -o ./enterprise-bench
# cd ./enterprise-bench/l1-l2-bench && make install && make setup
# apply MCP allowed_hosts fix if needed
make build-image
make start-servers
Host-header probe:
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8012/mcp \
-H "Host: host.docker.internal:8012" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}'
# expect 200
Phase 2 — Smoke (1 task, 1 attempt)
export OPENAI_API_KEY=...
harbor run \
-p eng-l1-a \
-a codex \
-m gpt-5.6-sol \
--mcp-config mcp.json \
--ae OPENAI_API_KEY=$OPENAI_API_KEY \
--ak web_search=disabled \
-k 1 -n 1 \
--yes \
--jobs-dir jobs/codex-gpt-5.6-sol-smoke
Smoke pass criteria: Codex installs, MCP tools appear in trajectory, judge writes reward.txt, no auth failure.
Phase 3 — Reliability pass (compare to Claude baseline)
Prior local claude-code / claude-opus-4-8 full job (2026-07-09__09-26-22): 70 trials, mean reward ~0.74, pass@5 ~0.93.
harbor run \
-p . \
-a codex \
-m gpt-5.6-sol \
--mcp-config mcp.json \
--ae OPENAI_API_KEY=$OPENAI_API_KEY \
--ak web_search=disabled \
-k 5 -n 3 \
--yes \
--jobs-dir jobs/codex-gpt-5.6-sol-k5
Run long jobs under tmux. Prefer explicit harbor run over Makefile defaults (Makefile still centers on claude-code).
Phase 4 — Optional methodology-grade + submit
harbor run -p . -a codex -m gpt-5.6-sol --mcp-config mcp.json \
--ae OPENAI_API_KEY=$OPENAI_API_KEY \
--ak web_search=disabled \
-k 10 -n 3 --yes \
--jobs-dir jobs/codex-gpt-5.6-sol-k10
Submission package (docs/submit-results.md):
- Agent: Codex + CLI version
- Model:
gpt-5.6-sol (+ reasoning_effort, web_search setting)
- Harbor version
- Dataset ref:
enterprise-bench/l1-l2-bench
- Full command,
-k, -n
- OS, Docker memory/CPU
- Harbor Hub job link or archived
jobs/
- Known failures / exclusions
Phase 5 — Teardown
Optional ablations (after Sol baseline)
# cost / efficiency
-m gpt-5.6-terra
-m gpt-5.6-luna
Keep k/n and MCP config identical so comparisons are fair.
Success metrics
- Mean reward / success rate
- pass@k (k=2,4,5 and/or 10)
- Per-task reliability (note historical hardness of eng-l1-a criterion 6)
- Infra errors vs genuine fails
- Rough wall-clock and OpenAI cost (agent + judge share the same provider)
Checklist
Time / cost rough order
| Scenario |
Trials |
Notes |
| Smoke eng-l1-a |
1 |
Includes first Codex install in container |
| Reliability k=5 |
70 |
Several hours at n=3 |
| Methodology k=10 |
140 |
Overnight / long day |
Task agent timeout typically 600s; verifier 300s.
Comparison (same protocol)
|
Claude Code |
Grok Build (#3) |
Codex (this issue) |
-a |
claude-code |
grok-build (≥0.20) |
codex (0.18+) |
-m |
claude-opus-4-8 |
grok-4.5 |
gpt-5.6-sol |
| Agent auth |
Anthropic / Bedrock |
XAI_API_KEY |
OPENAI_API_KEY |
| Judge |
OpenAI GPT-5 |
OpenAI GPT-5 |
OpenAI GPT-5 |
References
Artifacts (local, for internal share)
- HTML plan:
enterprise-bench-codex-execution-plan.html
- PDF plan:
enterprise-bench-codex-execution-plan.pdf (generated for team share)
Owner / next step
Execute Phase 0–2 when OPENAI_API_KEY is available in the runner shell, then Phase 3 for a submit-ready Codex / GPT-5.6 Sol data point.
Summary
Track an evaluation of OpenAI Codex (
-a codex) with GPT-5.6 Sol (-m gpt-5.6-sol) againstEnterprise-Bench/l1-l2-benchon Harbor Hub.Harness: Harbor (job runner, Docker trials, judge, jobs artifacts)
Agent under test: OpenAI Codex CLI (
@openai/codex, installed per trial container)Dataset: Enterprise-Bench/l1-l2-bench (14 tasks)
Primary model:
gpt-5.6-sol(flagship of the GPT-5.6 family)Judge: OpenAI GPT-5 via
OPENAI_API_KEY(required for all agents)Sister plan: Grok Build + grok-4.5 → #3
Why this run
codexadapter with Enterprise-Bench MCP servers (crm / pm / file-server).docs/submit-results.md.Architecture
Model choice (GPT-5.6 family)
GPT-5.6 is a family. Codex CLI model ids:
gpt-5.6-solgpt-5.6-terragpt-5.6-lunagpt-5.6gpt-5.6-solfor reproducibilityHarbor strips an optional provider prefix:
-m openai/gpt-5.6-sol→gpt-5.6-sol.Default Harbor Codex reasoning flag:
model_reasoning_effort=high. Document any override (--ak reasoning_effort=…). Prefer--ak web_search=disabledfor closed-book parity with the Grok plan’s default.Codex adapter facts (Harbor)
codex(available in Harbor 0.18+ — no special upgrade required, unlikegrok-build).npm install -g @openai/codex@latestinside trial (nvm/node 22 path on Debian images).codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --model <id> --json -- …--mcp-configwritten to$CODEX_HOME/config.tomlas[mcp_servers.*].agent/sessionsthen converted.Authentication
Default (recommended for submit-ready runs): API key
Always forward into the agent sandbox:
--ae OPENAI_API_KEY=$OPENAI_API_KEYOptional: ChatGPT / Codex subscription via auth.json
Harbor Codex defaults to API key. Opt into host login:
Still pass
OPENAI_API_KEYfor the judge unless judge env is separately provisioned.Recommendation: use API key for reproducible public submissions.
Prerequisites
codex-n 3maxmake build-image→enterprise-bench/conversational-base:latestmake start-servers(REST 9001–9003 + MCP 8011–8013)OPENAI_API_KEYKnown gotchas
make installbeforemake setup— setuptools flat-layout ondata//images/.allowed_hosts=["*"]to eachmcp.run(...), restart servers; verify Host-header probe returns 200.--ae OPENAI_API_KEY→ agent or judge 401.gpt-5.6-solover baregpt-5.6for reported results.-n.Execution plan
Phase 0 — Tooling
harbor --version harbor run -h | rg -i codex harbor auth statusPhase 1 — Dataset + environment
Host-header probe:
Phase 2 — Smoke (1 task, 1 attempt)
Smoke pass criteria: Codex installs, MCP tools appear in trajectory, judge writes
reward.txt, no auth failure.Phase 3 — Reliability pass (compare to Claude baseline)
Prior local claude-code / claude-opus-4-8 full job (
2026-07-09__09-26-22): 70 trials, mean reward ~0.74, pass@5 ~0.93.Run long jobs under
tmux. Prefer explicitharbor runover Makefile defaults (Makefile still centers on claude-code).Phase 4 — Optional methodology-grade + submit
Submission package (
docs/submit-results.md):gpt-5.6-sol(+ reasoning_effort, web_search setting)enterprise-bench/l1-l2-bench-k,-njobs/Phase 5 — Teardown
Optional ablations (after Sol baseline)
# cost / efficiency -m gpt-5.6-terra -m gpt-5.6-lunaKeep k/n and MCP config identical so comparisons are fair.
Success metrics
Checklist
codex; Hub login OKOPENAI_API_KEYavailable for agent + judgeTime / cost rough order
Task agent timeout typically 600s; verifier 300s.
Comparison (same protocol)
-aclaude-codegrok-build(≥0.20)codex(0.18+)-mclaude-opus-4-8grok-4.5gpt-5.6-solXAI_API_KEYOPENAI_API_KEYReferences
README.md,SKILL.md,docs/submit-results.mdArtifacts (local, for internal share)
enterprise-bench-codex-execution-plan.htmlenterprise-bench-codex-execution-plan.pdf(generated for team share)Owner / next step
Execute Phase 0–2 when
OPENAI_API_KEYis available in the runner shell, then Phase 3 for a submit-ready Codex / GPT-5.6 Sol data point.