stablyai/orca · error · Error
SSH filesystem provider unavailable
Error message
SSH filesystem provider unavailable
What it means
Thrown in the unregistered-worktree cleanup branch of worktrees:remove when repo.connectionId is set (SSH repo) but getSshFilesystemProvider returns undefined. Cleaning an orphaned worktree directory on the remote host requires filesystem inspection (lstat/readFile) to prove the directory is safe to delete; without a filesystem provider Orca refuses rather than delete blindly.
Source
Thrown at src/main/ipc/worktrees.ts:2459
const removedPushTarget = removedMeta?.pushTarget
const registeredWorktree = findRegisteredDeletableWorktree(
repo.path,
worktreePath,
registeredWorktrees
)
if (!registeredWorktree) {
const fsProvider = repo.connectionId
? getSshFilesystemProvider(repo.connectionId)
: null
let canCleanOrphanedDirectory = false
if (
canCleanupUnregisteredOrcaWorktreeDirectory({
meta: removedMeta
})
) {
if (repo.connectionId) {
if (!fsProvider) {
throw new Error('SSH filesystem provider unavailable')
}
if (!fsProvider.lstat) {
throw new Error('SSH filesystem provider lstat unavailable')
}
canCleanOrphanedDirectory = await canSafelyRemoveOrphanedWorktreeDirectory(
worktreePath,
repo.path,
(path) => fsProvider.lstat!(path),
(path) => fsProvider.readFile(path)
)
} else {
const access = getLocalWorktreePathAccess(localWorktreeGitOptions)
canCleanOrphanedDirectory =
!isDangerousWorktreeRemovalPath(worktreePath, repo.path) &&
(await canSafelyRemoveOrphanedWorktreeDirectory(
toLocalWorktreeRuntimePath(worktreePath, localWorktreeGitOptions),
toLocalWorktreeRuntimePath(repo.path, localWorktreeGitOptions),
access.statPath,View on GitHub (pinned to 1136503c6a)
Solutions
- Reconnect to the SSH target so the filesystem provider is available, then retry the removal.
- Retry with args.force once the provider is back so the orphaned-directory cleanup can proceed.
- Verify the SSH target registers both git and filesystem providers; an incomplete provider set is a connection/config defect.
Defensive patterns
Strategy: retry
Validate before calling
const fsProvider = await invoke('ssh:filesystemProviderStatus', repo.connectionId)
if (!fsProvider) {
await invoke('ssh:reconnect', repo.connectionId)
} Try / catch
try {
await invoke('worktrees:remove', { worktreeId, hostId })
} catch (e) {
if (e.message === 'SSH filesystem provider unavailable') {
await invoke('ssh:reconnect', connectionId)
return invoke('worktrees:remove', { worktreeId, hostId, force: true })
}
throw e
} Prevention
- Keep the SSH filesystem provider connected for SSH-backed repos.
- Ensure the SSH target registers both git and filesystem providers.
- Reconnect before retrying orphan-cleanup on SSH repos.
When it happens
Trigger: Removing an SSH-backed worktree that is no longer Git-registered but whose directory remains, at a moment when the SSH filesystem provider is unavailable (disconnected) even though the git provider path may have proceeded.
Common situations: SSH connection dropped between the git listing and the orphan-cleanup step, or the filesystem provider was never registered for the target while the git provider was.
Related errors
- SSH filesystem provider lstat unavailable
- Cannot safely offer force-delete for preserved branch "${res
- SSH Git provider is not available. Reconnect to this target
- Worktree is no longer registered with Git but its directory
- Worktree is no longer registered with Git and its directory
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/a72597d18447b071.
Report an issue: GitHub.