Files
IdeA/.ideai/memory/permissions-sandbox-system-state.md

3.1 KiB

name, description, metadata
name description metadata
permissions-sandbox-system-state Etat du systeme de permissions/sandbox IdeA (domaine pur -> projection advisory -> enforcement OS Landlock sur PTY ET structure) et l'unique risque residuel.
type
project

Systeme de permissions / sandbox IdeA

Chantier "permissions des agents" complet bout-en-bout au 2026-06-16, sur la branche wip/p8c-checkpoint-before-codex. Lots committes : LP4-0 (b05d04a), LP4-1/LP4-2 (17ca65e), LP4-3 (7e01ac6), LP4-4 (6236cd7).

Acquis (tout vert, ~80 suites)

  • Domaine pur (crates/domain/src/permission.rs, sandbox.rs) : modele declaratif (Capability, Effect, Posture Allow<Ask<Deny, deny-wins), resolve() (invariant produit : rien pose => None => CLI garde son prompting natif), compile_sandbox_plan(eff, ctx) -> Option<SandboxPlan>, port SandboxEnforcer, render_permission_summary (honnetete : fichiers = OS-enforced, commandes = advisory).
  • Store : .ideai/permissions.json (separe d'agents.json : securite projet, pas identite).
  • Projection advisory LP3 : projecteurs Claude (settings.json) + Codex (sandbox/config.toml).
  • Enforcement OS LP4 : LandlockSandbox (Linux) / NoopSandbox / default_enforcer(). Actif sur les deux chemins : PTY brut (pty/mod.rs spawn_command_sandboxed) ET structure Claude/Codex JSON (session/process.rs run_turn_sandboxed).

Technique d'enforcement (load-bearing, ne pas casser)

enforce(plan) tourne sur un thread jetable AVANT le spawn, puis le child est spawne depuis ce thread => il herite le domaine Landlock via les credentials de la tache (garanti par le noyau a travers fork/clone/execve, y compris posix_spawn). Pas de pre_exec : infrastructure est #![forbid(unsafe_code)] (intact), et le pre_exec n'aurait ete qu'une assurance de determinisme, sans valeur de securite ; allouer dans landlock post-fork (pre_exec) serait au contraire dangereux (deadlock malloc en process multithreade). Fail-closed : Err d'enforce => aucun child. Le garde-fou anti-regression est le test e2e "ecriture hors-grant bloquee" (present pour PTY et structure) : tant qu'il est vert, l'heritage tient.

Risque residuel a traiter (signale par l'Architecte, NON couvert)

Les CLI structurees (claude/codex = binaires Node) ont des besoins FS ambiants lourds : ~/.claude/~/.codex (credentials + cache de session pour le resume), node_modules, libs systeme, caches temp. compile_sandbox_plan ne fence que les classes explicitement posees et garde les lectures ouvertes — mais une policy posant un Deny/posture restrictive touchant $HOME peut casser le resume. Le mecanisme est valide au fake CLI (zero token), mais avant d'activer un plan restrictif en prod sur le chemin structure, valider e2e manuellement qu'un vrai tour claude/codex sous plan representatif garde run_dir + home de la CLI atteignables. C'est un sujet de composition du plan (run_dir reachability ; SandboxContext.run_dir existe mais n'est pas encore consomme par la traduction pure), pas du mecanisme — lot suivant si besoin.

Voir remaining-work-idea-agent-control-ide pour le reste des chantiers produit.