You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Re-scoped 2026-06-18 after the security audit (audit comment) + the #420 networking review. Original framing ("wide-open, unaudited any-device→tunnel→shell") was stale on two counts:
agentwire owns no internet tunnel (Networking/tunnel footprint review: what does agentwire own, and should it? #420): the "from anywhere" path is the user's own cloudflared/tailscale. agentwire's responsibility ends at "the portal refuses unauthenticated requests regardless of what's in front of it." This issue hardens only the portal listener — not tunnels, not remote-machine SSH.
Verify/fix artifact path-traversal on DELETE /api/artifacts/{filename:.+} + upload write target
Retracted: "retire the remote SSH terminal branch" — that's cross-machine session viewing, KEEP (see #420).
Verification (baseline, already satisfiable)
From a second device without the token, every non-public route returns 401; with the token, full access works. #423/#424 are what make "full access" scoped instead of all-or-nothing.
Umbrella: portal-boundary hardening
Re-scoped 2026-06-18 after the security audit (audit comment) + the #420 networking review. Original framing ("wide-open, unaudited any-device→tunnel→shell") was stale on two counts:
server.hostdefaults to127.0.0.1, bearer-token auth, refuse-to-start-without-token on non-loopback, constant-time compare, MCP is stdio-only (never network-exposed).Residual gaps → follow-up issues
Created (high-risk — leaked-token blast radius):
Backlog (pull when ready):
--insecure)/health,/,/mobileconfirm agentwire pre-token) — low priorityDELETE /api/artifacts/{filename:.+}+ upload write targetRetracted: "retire the remote SSH terminal branch" — that's cross-machine session viewing, KEEP (see #420).
Verification (baseline, already satisfiable)
From a second device without the token, every non-public route returns 401; with the token, full access works. #423/#424 are what make "full access" scoped instead of all-or-nothing.