fix(agent): retrait --ask-for-approval invalide pour codex exec 0.137 — §17.9 D3

`codex exec` 0.137 ne connaît pas `--ask-for-approval` (`error: unexpected
argument`) ; ce flag appartient à la commande interactive `codex`, pas à la
sous-commande `exec` déjà non-interactive. Sa présence cassait toute réponse
d'un agent Codex (flux structuré terminé sans Final), bloquant la conversation
inter-agents. argv désormais verrouillé exact dans les tests (16/16 verts).

Découvert et corrigé pendant la validation réelle de la messagerie inter-agents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 23:15:36 +02:00
parent cf89b3b9a5
commit 2f20fdbab4
2 changed files with 49 additions and 62 deletions

View File

@ -141,19 +141,20 @@ impl CodexExecSession {
/// Compose la ligne de commande d'un tour.
///
/// Format RÉEL vérifié 2026-06-09 :
/// Format RÉEL vérifié 2026-06-10 (codex 0.137.0) :
/// - Conversation neuve : `codex exec --json --skip-git-repo-check
/// --sandbox workspace-write --ask-for-approval never <prompt>`.
/// --sandbox workspace-write <prompt>`.
/// - Reprise (id connu) : `codex exec resume <thread_id> --json
/// --skip-git-repo-check --sandbox workspace-write --ask-for-approval never
/// <prompt>`.
/// --skip-git-repo-check --sandbox workspace-write <prompt>`.
///
/// **Autonomie d'écriture (D3)** : `--sandbox workspace-write` autorise l'agent à
/// écrire dans son workspace et `--ask-for-approval never` évite tout blocage sur
/// une demande d'approbation interactive (un tour structuré non-interactif ne peut
/// répondre à un prompt). Défaut raisonnable, aligné sur l'autonomie projet
/// (CLAUDE.md §12) ; à terme **piloté par les permissions de l'agent**
/// (`.ideai/permissions.json` + sandbox OS) — non implémenté ici.
/// écrire dans son workspace. `codex exec` est déjà non-interactif (aucun prompt
/// d'approbation possible), donc on ne passe **pas** `--ask-for-approval` : ce flag
/// appartient à la commande interactive `codex`, pas à la sous-commande `exec` qui
/// sort sur `error: unexpected argument '--ask-for-approval' found`. Défaut
/// raisonnable, aligné sur l'autonomie projet (CLAUDE.md §12) ; à terme **piloté par
/// les permissions de l'agent** (`.ideai/permissions.json` + sandbox OS) — non
/// implémenté ici.
fn build_spawn_line(&self, prompt: &str) -> SpawnLine {
let mut args = vec!["exec".to_owned()];
if let Some(id) = self.conversation_id.lock().expect("mutex sain").as_ref() {
@ -164,8 +165,6 @@ impl CodexExecSession {
args.push("--skip-git-repo-check".to_owned());
args.push("--sandbox".to_owned());
args.push("workspace-write".to_owned());
args.push("--ask-for-approval".to_owned());
args.push("never".to_owned());
args.push(prompt.to_owned());
SpawnLine {
command: self.command.clone(),