165d1849e2
The protected agent-instruction gate grants one operation and persists nothing, but only the TUI/desktop and Runs transports were taught that. The prompt_toolkit panel, the input() fallback, and the ACP editor menu still rendered "Allow for session", so a user editing SOUL.md tapped it, got re-prompted on the next write, and read the gate as broken. Thread allow_session through prompt_dangerous_approval so a caller that re-asks every time collapses every surface to once/deny, and cover the producer-to-transport contract end to end.