Live steering
September 19, 2026 ยท View on GitHub
Foreman can send Jev-informed guidance into an active Codex turn before resorting to termination.
The feature uses Codex App Server because the non-interactive codex exec transport has no channel
for additional input during a turn.
Decision flow
- Foreman builds the same bounded factory observation used for every assessment.
- Jev compares the live evidence with any repository-root
AGENTS.override.mdorAGENTS.mdinstructions and scoresagents_md_drift,worker_stuck,work_off_track,meaningful_progress, and the other dimensions. - The deterministic policy checks safety limits and the worker's steering history.
- The first AGENTS.md drift, stuck, or off-track result at the configured threshold selects
STEER_WORKER. - Foreman translates the scores into a bounded instruction and calls App Server
turn/steerwith the recorded thread and turn identifiers. - The worker receives a grace period. If the warning remains high afterward, policy stops it and uses the existing retry path.
Jev does not directly write the steering prompt or control the process. It supplies probabilities; ordinary Python selects an allowed action and deterministically formats the guidance.
Repository instructions are read from the target repository for each observation, passed only in the transient Jev request, and are not copied into source code or persisted in factory state.
State and observability
Each worker records its Codex thread ID, turn ID, steering count, last steering time, and steering
history. Successful and rejected attempts become WORKER_STEERED or WORKER_STEER_FAILED events.
The terminal prints accepted guidance live, and foreman inspect includes the event in the persisted
timeline.
Configuration
The default backend is app-server, steering is enabled, one steering attempt is allowed per
worker, and the grace period is 30 seconds. Set FOREMAN_CODEX_BACKEND=exec to use the stable
non-interactive fallback; Foreman does not select steering while that backend is active. Steering
can also be disabled independently with FOREMAN_STEERING_ENABLED=false.
Boundaries
- App Server is currently experimental and its protocol may evolve.
- A successful
turn/steerresponse means Codex accepted the input, not that it followed it. - Foreman suppresses repeated guidance with per-worker limits and a grace period.
- Human need and hard iteration limits still outrank steering.
- Stop, retry, timeouts, and escalation remain available when steering does not restore progress.