feat(ssh): typed degradation errors for API-dependent commands in ssh-only (token-less) mode #295

Closed
opened 2026-07-20 14:46:21 +00:00 by hexajon · 0 comments
hexajon commented 2026-07-20 14:46:21 +00:00 (Migrated from codeberg.org)

Part of #187 (SSH-only mode epic). Depends on the protocol-mode slice.

In ssh only mode (no token anywhere in the chain), every command that needs the REST API (issues, PRs, merge, labels, releases, most MCP tools) fails with one typed error that names the operation, states plainly that this operation rides the HTTPS API which SSH cannot carry, and gives the exact auth login step that enables it - never a generic "not configured" or a bare 401. Pure-git commands (clone, push, pull, worktrees, branch, commit, status) keep working fully.

Acceptance:

  • One typed error (service-level), rendered on both surfaces, with the operation name, the why, and the exact remedy command
  • A representative API-dependent command from each command group produces it in ssh-only mode (table-driven test)
  • Pure-git commands are proven unaffected in ssh-only mode (test-pinned list)
  • The error text is self-contained per the shipped-strings rule (no issue/ADR numbers)
  • MCP initialize/banner reports ssh-only mode honestly instead of warning about missing credentials as if misconfigured
Part of #187 (SSH-only mode epic). Depends on the protocol-mode slice. In `ssh only` mode (no token anywhere in the chain), every command that needs the REST API (issues, PRs, merge, labels, releases, most MCP tools) fails with one typed error that names the operation, states plainly that this operation rides the HTTPS API which SSH cannot carry, and gives the exact `auth login` step that enables it - never a generic "not configured" or a bare 401. Pure-git commands (clone, push, pull, worktrees, branch, commit, status) keep working fully. Acceptance: - [ ] One typed error (service-level), rendered on both surfaces, with the operation name, the why, and the exact remedy command - [ ] A representative API-dependent command from each command group produces it in ssh-only mode (table-driven test) - [ ] Pure-git commands are proven unaffected in ssh-only mode (test-pinned list) - [ ] The error text is self-contained per the shipped-strings rule (no issue/ADR numbers) - [ ] MCP initialize/banner reports ssh-only mode honestly instead of warning about missing credentials as if misconfigured
Sign in to join this conversation.
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
sixfold-space/madtea#295
No description provided.