Warp Preview does not hot-reload tab_configs, silently breaks dispatch interactive after agentic-os ships a new TOML #8

Open
opened 2026-05-23 20:53:19 +00:00 by coilysiren · 0 comments
Owner

Originally filed by @coilysiren on 2026-05-20T12:41:44Z - https://github.com/coilysiren/agentic-os/issues/114

Symptom

A new tab_configs/*.toml added to ~/.warp-preview/tab_configs/ mid-session is not discoverable by the warppreview://tab_config/<name> URI handler until Warp Preview is fully restarted (Cmd-Q, not just window close).

Repro (2026-05-20, Warp Preview build 0.2026.05.18.05.32.03):

  1. Warp Preview running, has been for hours.
  2. ln -s <repo>/warp/tab_configs/claude-dispatch-interactive.toml ~/.warp-preview/tab_configs/. Then ls ~/.warp-preview/tab_configs/ shows the file.
  3. open warppreview://tab_config/claude-dispatch-interactive. exit=0 from open.
  4. ~/Library/Logs/warp_preview.log shows:
    [INFO] received url scheme=warppreview host=tab_config path=/claude-dispatch-interactive
    [WARN] couldn't find a tab config matching 'claude-dispatch-interactive'
    
  5. Replacing the symlink with a real file copy and re-firing the URI: same WARN. So it is not a symlink-resolution issue.
  6. The same session resolves warppreview://tab_config/startup_config correctly. startup_config.toml existed when Warp Preview started this session, so it is in the cache.

Root cause (best guess)

Warp Preview loads the ~/.warp-preview/tab_configs/ directory once at startup and does not re-walk it when the URI handler resolves a name. launch_configurations/*.yaml hot-reload fine in the same Warp Preview build, so it is specific to the tab_config code path landed by warpdotdev/Warp#9379.

Why this is a finding, not a one-off

It silently breaks the contract every coily dispatch interactive (and any future tab-config-driven workflow) advertises. The failure mode is "open exits 0, nothing happens" with no operator-visible signal that the lookup missed. The only diagnostic is ~/Library/Logs/warp_preview.log. coily's audit row reports success because open succeeded.

What to do

  1. Workaround on Kai's side: restart Warp Preview any time a new file lands in tab_configs/. The dual-channel auto-symlink setup means this happens any time agentic-os ships a new tab_config and a setup.sh walk runs.
  2. File upstream as warpdotdev/Warp feature request: tab_configs should hot-reload (mirror launch_configurations behavior).
  3. Add an agentic-os-side mitigation: a coily ops warp restart-preview verb, or a pre-flight check in coily dispatch interactive that scans ~/Library/Logs/warp_preview.log for the most recent "couldn't find" warning matching the launch name and surfaces it as a non-zero exit instead of silent success.

Out of scope

  • Patching upstream Warp. Open the feature request, link from this finding.
  • The launch_configurations equivalent. That path already hot-reloads.

References

_Originally filed by @coilysiren on 2026-05-20T12:41:44Z - [https://github.com/coilysiren/agentic-os/issues/114](https://github.com/coilysiren/agentic-os/issues/114)_ **Symptom** A new `tab_configs/*.toml` added to `~/.warp-preview/tab_configs/` mid-session is not discoverable by the `warppreview://tab_config/<name>` URI handler until Warp Preview is fully restarted (Cmd-Q, not just window close). Repro (2026-05-20, Warp Preview build `0.2026.05.18.05.32.03`): 1. Warp Preview running, has been for hours. 2. `ln -s <repo>/warp/tab_configs/claude-dispatch-interactive.toml ~/.warp-preview/tab_configs/`. Then `ls ~/.warp-preview/tab_configs/` shows the file. 3. `open warppreview://tab_config/claude-dispatch-interactive`. `exit=0` from `open`. 4. `~/Library/Logs/warp_preview.log` shows: ``` [INFO] received url scheme=warppreview host=tab_config path=/claude-dispatch-interactive [WARN] couldn't find a tab config matching 'claude-dispatch-interactive' ``` 5. Replacing the symlink with a real file copy and re-firing the URI: same WARN. So it is not a symlink-resolution issue. 6. The same session resolves `warppreview://tab_config/startup_config` correctly. `startup_config.toml` existed when Warp Preview started this session, so it is in the cache. **Root cause (best guess)** Warp Preview loads the `~/.warp-preview/tab_configs/` directory once at startup and does not re-walk it when the URI handler resolves a name. `launch_configurations/*.yaml` hot-reload fine in the same Warp Preview build, so it is specific to the tab_config code path landed by warpdotdev/Warp#9379. **Why this is a finding, not a one-off** It silently breaks the contract every `coily dispatch interactive` (and any future tab-config-driven workflow) advertises. The failure mode is "open exits 0, nothing happens" with no operator-visible signal that the lookup missed. The only diagnostic is `~/Library/Logs/warp_preview.log`. coily's audit row reports success because `open` succeeded. **What to do** 1. Workaround on Kai's side: restart Warp Preview any time a new file lands in `tab_configs/`. The dual-channel auto-symlink setup means this happens any time agentic-os ships a new tab_config and a `setup.sh` walk runs. 2. File upstream as warpdotdev/Warp feature request: tab_configs should hot-reload (mirror launch_configurations behavior). 3. Add an agentic-os-side mitigation: a `coily ops warp restart-preview` verb, or a pre-flight check in `coily dispatch interactive` that scans `~/Library/Logs/warp_preview.log` for the most recent "couldn't find" warning matching the launch name and surfaces it as a non-zero exit instead of silent success. **Out of scope** - Patching upstream Warp. Open the feature request, link from this finding. - The launch_configurations equivalent. That path already hot-reloads. **References** - coilysiren/coily#274 (default to tab_config surface) - coilysiren/agentic-os#113 (companion tab_config TOML) - warpdotdev/Warp#9379 (tab_config URI handler PR)
coilysiren added
P4
and removed
P3
labels 2026-05-31 07:00:07 +00:00
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
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#8
No description provided.