feat(warp): manage Warp default-shell pref in apply #230

Closed
opened 2026-06-17 08:47:44 +00:00 by coilysiren · 2 comments
Owner

Problem

ward exec warp apply converges most of Kai's Warp state as code: it renders settings.toml, startup_config.toml, the theme, and the pwsh $PROFILE, plus the SQLite layer. The one piece it does not manage is which shell Warp launches for new tabs. On Windows that choice (PowerShell / Git Bash / WSL / Cmd) is an app preference stored in warp.sqlite, with no key in settings.toml.

Result: switching the default shell on a host is a manual Warp Settings toggle that drifts per machine and is invisible to warp doctor. Kai hit this making Git Bash the default on kai-tower-3026, where every other layer was already converged.

Proposal

Teach the warp Go tool to manage the default-shell preference as part of apply:

  • Add a host-resolved default-shell value (the tool already resolves per-OS paths in paths.go, so the shell program path fits the same pattern).
  • Write that preference into warp.sqlite during apply, alongside the existing SQLite work.
  • Have warp doctor report drift when the live pref does not match the desired shell.

Notes

  • The pwsh-tabs-land-in-StartupDir fix (a578b3d) is the adjacent change that motivated this. With the shell tracked, StartupDir plus the chosen shell would both be converged rather than half-manual.
  • Keep it public-safe: the shell program path is a host detail, so resolve it at runtime like the other HostPaths fields rather than hardcoding a machine path.
## Problem `ward exec warp apply` converges most of Kai's Warp state as code: it renders `settings.toml`, `startup_config.toml`, the theme, and the pwsh `$PROFILE`, plus the SQLite layer. The one piece it does not manage is **which shell Warp launches for new tabs**. On Windows that choice (PowerShell / Git Bash / WSL / Cmd) is an app preference stored in `warp.sqlite`, with no key in `settings.toml`. Result: switching the default shell on a host is a manual Warp Settings toggle that drifts per machine and is invisible to `warp doctor`. Kai hit this making Git Bash the default on kai-tower-3026, where every other layer was already converged. ## Proposal Teach the warp Go tool to manage the default-shell preference as part of `apply`: * Add a host-resolved default-shell value (the tool already resolves per-OS paths in `paths.go`, so the shell program path fits the same pattern). * Write that preference into `warp.sqlite` during `apply`, alongside the existing SQLite work. * Have `warp doctor` report drift when the live pref does not match the desired shell. ## Notes * The pwsh-tabs-land-in-`StartupDir` fix (a578b3d) is the adjacent change that motivated this. With the shell tracked, `StartupDir` plus the chosen shell would both be converged rather than half-manual. * Keep it public-safe: the shell program path is a host detail, so resolve it at runtime like the other `HostPaths` fields rather than hardcoding a machine path.
Author
Owner

Goose triage - 2026-06-17

  • Tier: P4 (score 65) - Real backlog item with clear implementation path
  • Mode: headless - Clear technical implementation with no ambiguous design decisions

Auto-generated by ward exec goose-triage (qwen3-coder:30b), edited in place on each run. Labels are the conclusion; this is the why.

<!-- goose-triage --> **Goose triage** - 2026-06-17 - **Tier:** `P4` (score 65) - Real backlog item with clear implementation path - **Mode:** `headless` - Clear technical implementation with no ambiguous design decisions <sub>Auto-generated by `ward exec goose-triage` (qwen3-coder:30b), edited in place on each run. Labels are the conclusion; this is the why.</sub>
Member

🔒 Reserved by ward agent claude — container ward-agentic-os-issue-230-claude-014fe209 on host kais-macbook-pro.local is carrying this issue (reserved 2026-06-18T08:15:03Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent claude` — container `ward-agentic-os-issue-230-claude-014fe209` on host `kais-macbook-pro.local` is carrying this issue (reserved 2026-06-18T08:15:03Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/agentic-os#230
No description provided.