readonly remote deploy-state checks need a coily wrapper #58
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally filed by @coilysiren on 2026-05-05T02:32:53Z - https://github.com/coilysiren/coily/issues/48
Problem
There's a recurring shape that currently has no good entry point: "has my last push to repo X reached host Y yet, and is the service healthy?"
Concrete instance that surfaced this:
sirens-discord-opsdeploys via an on-host systemd auto-update timer (5-min poll oforigin/main, rebuild + restart on diff). After agit push, the natural follow-up is to poll until the new SHA is live before testing the change. The mechanically obvious way to do that isssh kai-server 'git rev-parse HEAD && systemctl status ...'- readonly, no state change, allow-listed viaBash(ssh:*)in settings.But the Claude Code harness treats any
ssh <prod-host>invocation as a "production remote shell" action and blocks it above the allow-list. That's the right default - bare SSH is too coarse a hammer to whitelist - but it leaves no path for the readonly polling case other than asking for one-off authorization every time.Why this belongs in coily
The wrapper-everything principle: every privileged or production-touching op routes through coily so it inherits the audit + gate discipline, and the harness can trust the wrapper's narrower surface instead of the SSH primitive. Readonly remote inspection has been ad-hoc'd via raw SSH because no wrapper exists yet - same gap that
coily aws ssmandcoily gaming ecofilled for their domains.Recurring shapes that would use this
All of these are bounded, readonly, and want the same audit trail as a write op - they just don't change anything.
Out of scope (intentionally)
Not prescribing the surface here. The architectural call - subcommand layout, how hosts are declared, whether this fronts SSH directly or goes through Tailscale serve / a sidecar / etc. - is the follow-up.