specs/059-automatic-agent-permissions/plan.md
Implementation plan: Automatic agent permissions
Branch: agents/automatic-permissions | Date: 2026-10-14 | Spec: spec.md
Summary
Add a default-off GUI preference; convert supported installed bare launch commands into native automatic commands. Preserve Signaltty's generated automatic prefix during standard resume and default same-provider task starts. Explicit commands retain precedence.
Technical Context
Rust 2021, pinned Rust 1.94 development toolchain, GTK4/libadwaita GUI. Existing serde JSON preference storage and pane snapshot arguments. No new dependencies or provider config writes. Linux desktop. Pure argument logic tests, existing preference tests, server IPC tests with fixture processes, isolated GTK tests and scripts/verify.sh full.
Performance: constant small argv work only, no provider invocation or polling added.
Constitution Check
Spec/plan/tasks precede code; existing confirmed test seams are reused. Core stays toolkit-free, pure argument transformation stays in signaltty-agent. No new state transitions or IPC methods. Native controls use existing styles. ADR records permission precedence. Default-off preserves existing behavior. No unresolved questions or deviations, before and after design.
Project Structure
crates/signaltty-core/src/theme.rs: persisted preference parsing.crates/signaltty-agent/src/execution.rs,resume.rs: pure native automatic mode helpers and resume preservation.crates/signaltty-gui/src/preferences.rs,app.rs,new_workspace.rs: persistent switch and installed-command launch choice.crates/signaltty-server/src/tasks.rs: default worker inheritance.- Existing core, agent, GTK and server test files: regression coverage.
docs/07-agents.md,06-gui-toolkit.md,08-ipc.md,adr/0036-automatic-agent-permissions.md: contracts and limits.
Verification Strategy
Red-green slices: persisted boolean; managed automatic commands; standard resume; default worker inheritance; native control callback and appearance. Tests use existing public parse/launch/resume/IPC interfaces and native widgets. Full gate plus native light/dark renders; no paid provider prompts are run or claimed.