orca/docs
s546126 0302ae86b8
feat(ssh): support Kerberos/GSSAPI hosts via the system OpenSSH transport (#7507)
* feat(ssh): support Kerberos/GSSAPI hosts via the system OpenSSH transport

ssh2 has no gssapi-with-mic support, and adding it would mean forking its
protocol layer plus packaging the kerberos native module for three
platforms. Instead, route GSSAPI hosts through the existing system-OpenSSH
transport, which delegates Kerberos (tickets, SSPI on Windows) to the
platform ssh binary.

Two tiers, because RHEL-family distros enable GSSAPIAuthentication
globally in /etc/ssh/ssh_config and ssh -G therefore reports it for every
host:

- Targets whose ~/.ssh/config Host block explicitly sets
  GSSAPIAuthentication yes (imported as target.gssapiAuthentication) try
  system ssh first, falling through to ssh2 so key auth and credential
  prompts still work when no ticket is available.
- When ssh2 exhausts key/agent auth and the ssh -G-resolved config
  enables GSSAPI, retry over system ssh before prompting for credentials,
  so Kerberos-only hosts on distro-default configs connect without a
  password prompt. Hosts where keys work never leave the ssh2 path.

Manual targets flagged for GSSAPI pass -o GSSAPIAuthentication=yes
explicitly since they bypass ssh_config. Both tiers work headless (no
credential callbacks required).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(ssh): harden GSSAPI transport selection (review fixes for PR #7507)

Review fixes on top of the Kerberos/GSSAPI feature branch (s546126/kerberos-ssh):

- HIGH: reset useSystemSshTransport on the ssh2 fall-through. doSystemSshProbe
  sets the flag before spawnSystemSshCommand, which throws synchronously when no
  system ssh binary is on PATH (outside the probe try/catch). The proactive
  fall-through previously reset only 2 of 3 transport fields, so exec/sftp kept
  routing through the failed transport - breaking GSSAPI on Windows-with-Git-ssh
  and headless Linux.
- MEDIUM: throw a cancellation error (not the stale ssh2 authError) when a
  disconnect supersedes the reactive probe mid-flight, and guard connect()'s
  catch on disposed, so a deliberate disconnect is not overwritten with
  auth-failed.
- MEDIUM: skip the encrypted-key passphrase prompt when the GSSAPI fallback
  applies, so a Kerberos ticket is tried before prompting; the general prompt
  still fires if the probe fails.

Adds 3 mutation-verified regression tests and hardens two existing tests to
assert the probe actually ran. Not connected to any PR remote.

Co-authored-by: Orca <help@stably.ai>

* fix(ssh): isolate GSSAPI system transport

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: s546126 <268420947+s546126@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-07-15 01:58:46 -07:00
..
assets Update README downloads badge 2026-07-15 07:01:51 +00:00
readme chore(mobile): prepare 0.0.31 releases (#8820) 2026-07-14 22:51:02 -07:00
reference feat(ssh): support Kerberos/GSSAPI hosts via the system OpenSSH transport (#7507) 2026-07-15 01:58:46 -07:00
STYLEGUIDE.md 1.4.131 rc2 release prep (#8020) 2026-07-09 21:54:22 -07:00
agent-status-over-wsl.md Agent status over WSL: guest-resident hook relay + WSL-side hook installers (STA-1515) (#7903) 2026-07-10 00:19:45 -07:00
android-emulation-streaming.md feat(emulator): Android emulation via scrcpy (cross-platform, iOS parity) (#6434) 2026-06-28 21:01:09 -07:00
android-emulation.md feat(emulator): Android emulation via scrcpy (cross-platform, iOS parity) (#6434) 2026-06-28 21:01:09 -07:00
automations-navigation-stack.md feat(nav): add automations to worktree history (#2454) 2026-05-20 15:26:11 -07:00
browser-normal-download-behavior.md Improve built-in browser downloads (#5940) 2026-06-20 16:33:20 -07:00
claude-fable-weekly-usage-meter.md Support Claude weekly Fable usage meter (#7079) 2026-07-02 01:34:44 -07:00
claude-scoped-oauth-usage-limits.md fix(rate-limits): restore Claude Fable OAuth usage (#8323) 2026-07-11 15:11:08 -07:00
claude-usage-tracking-codexbar-parity.md Improve Claude usage refresh fallback behavior (#5995) 2026-06-21 13:10:25 -07:00
cmd-j-tab-session-search.md Add Cmd-J tab session search (#5775) 2026-06-19 00:27:05 -07:00
compact-worktree-card-setting-graduation.md Graduate compact worktree card setting (#4924) 2026-06-08 17:37:11 -07:00
configurable-open-in-menu.md
delete-workspace-windows-unregistered.md Fix Windows workspace deletion runtime resolution (#5888) 2026-06-20 03:16:29 -07:00
double-tap-modifier-keybindings-design.md feat(shortcuts): double-tap modifier keybindings (#5516) 2026-06-17 18:25:27 -07:00
droid-orchestration-group.md Add Droid orchestration routing (#4624) 2026-06-04 10:00:11 -07:00
editor-find-layout-aware-shortcut.md Fix layout-aware find in the source editor (#8088) 2026-07-10 03:56:55 -07:00
failed-automation-rerun-action.md Add failed automation rerun action (#2913) 2026-05-27 11:28:16 -07:00
floating-terminal-panel-position-persistence.md fix: persist floating terminal panel bounds (#3828) 2026-05-30 11:59:19 -07:00
github-tasks-close-reason-parity.md Add GitHub task close reason parity (#6141) 2026-06-23 15:18:46 -07:00
image-viewer-pinch-zoom.md Add image viewer pinch zoom (#3531) 2026-05-31 14:07:15 -07:00
issue-7649-vscode-wsl-launch.md fix(windows): open WSL workspaces in VS Code remote (#7982) 2026-07-09 22:37:40 -04:00
kill-all-sessions-also-kills-empty-terminals.md chore: remove release-scan artifact and trailing whitespace (#8184) 2026-07-10 17:13:39 -07:00
linear-issues-load-more.md Add Linear issue load more (#4437) 2026-06-01 23:35:47 -07:00
linear-scope-selector.md Improve Linear scope selection (#3850) 2026-05-30 12:55:13 -07:00
native-chat-codex-tui-parity.md Polish desktop native chat view (#6641) 2026-06-28 15:43:07 -07:00
new-worktree-sidebar-reveal.md Revert centered sidebar jump behavior (#8019) 2026-07-10 03:00:51 -07:00
orchestration-reset-scope-validation.md Validate orchestration reset scope (#2960) 2026-05-27 21:40:33 -04:00
persist-tree-view-source-control.md Persist Source Control view mode (#2153) 2026-05-17 22:26:49 -07:00
refresh-github-issues-after-create.md Refresh GitHub issues after creation (#3018) 2026-05-28 21:14:58 -04:00
remote-web-paste-activity-fixes.md Fix remote paste and workspace activity (#3521) 2026-05-30 03:35:56 -04:00
renderer-memory-profile-2026-06-01.md Handle ANSI redraw controls in terminal previews (#4418) 2026-06-01 16:21:11 -07:00
show-full-tab-title-tooltip.md Show full tab titles in tab tooltips (#2986) 2026-05-28 11:16:32 -07:00
source-control-push-failure-ai-recovery.md feat(source-control): add push failure AI recovery (#7826) 2026-07-08 18:59:28 -07:00
ssh-config-target-compatibility.md Improve SSH config target handling (#3899) 2026-05-30 13:10:39 -07:00
ssh-handler-reregistration-port-forwards.md Fix SSH handler re-registration port forwards (#2963) 2026-05-27 21:04:30 -07:00
terminal-close-confirmation.md Refine terminal close confirmation (#5541) 2026-06-16 17:42:48 -07:00
terminal-main-owned-state.md Terminal performance initiative: pipeline fixes + term-speed-2 revival + PTY flow control (integration branch) (#7214) 2026-07-10 17:27:47 -07:00
terminal-scroll-intent-architecture.md Fix terminal scroll intent across workspace switches (#6319) 2026-06-24 20:16:14 -07:00
windows-secure-file-acl-hardening.md fix(windows): stop main-thread PowerShell ACL storm on env-store reads (#5011) 2026-06-09 01:47:29 -07:00
worktree-delete-preflight.md
worktree-sidebar-drag-autoscroll.md Add workspace sidebar drag autoscroll (#3027) 2026-05-28 21:52:08 -07:00
wrapped-terminal-file-link-fragments.md Fix hard-wrapped terminal file links (#8100) 2026-07-10 08:26:06 -07:00