phacility/phabricator · error · Exception
This repository ("%s") is not available over SSH.
Error message
This repository ("%s") is not available over SSH. What it means
Before serving SSH, the workflow calls PhabricatorRepository::canServeProtocol(ssh, ...). That returns false when the repository is untracked/inactive for user requests, or when no clone URI observes the builtin SSH protocol with a suitable IO type (Read/Write for pushes; Read or Read/Write for pulls). The exception tells you the repo is not available over SSH.
Source
Thrown at src/applications/diffusion/ssh/DiffusionSSHWorkflow.php:243
$base = $info['base'];
$this->baseRequestPath = $base;
$repository = id(new PhabricatorRepositoryQuery())
->setViewer($viewer)
->withIdentifiers(array($identifier))
->needURIs(true)
->executeOne();
if (!$repository) {
throw new Exception(
pht('No repository "%s" exists!', $identifier));
}
$is_cluster = $this->getIsClusterRequest();
$protocol = PhabricatorRepositoryURI::BUILTIN_PROTOCOL_SSH;
if (!$repository->canServeProtocol($protocol, false, $is_cluster)) {
throw new Exception(
pht(
'This repository ("%s") is not available over SSH.',
$repository->getDisplayName()));
}
if ($repository->getVersionControlSystem() != $vcs) {
$this->raiseWrongVCSException($repository);
}
return $repository;
}
protected function requireWriteAccess($protocol_command = null) {
if ($this->hasWriteAccess === true) {
return;
}
$repository = $this->getRepository();View on GitHub (pinned to 5720a38cfe)
Solutions
- Go to Diffusion -> Manage Repository -> URIs and add or enable the builtin ssh:// URI with IO type Read & Write (Read is enough for clones)
- Activate the repository if it is currently untracked/inactive
- Use the HTTP(S) clone URI instead if SSH is intentionally disabled
Defensive patterns
Strategy: validation
Validate before calling
// Confirm SSH serving is enabled before cloning/pushing
$protocol = PhabricatorRepositoryURI::BUILTIN_PROTOCOL_SSH;
if (!$repository->canServeProtocol($protocol, $is_write)) {
// guide the user to the HTTP(S) URI or to enabling the SSH URI
} Prevention
- After creating a repository, confirm its builtin SSH URI exists with the intended IO type
- When disabling SSH in favor of HTTPS, update all documented clone URLs
- Remember read-only URIs reject pushes even though clones succeed
When it happens
Trigger: Pushing to a repository whose SSH URI is set to No I/O or Read Only; cloning over SSH when the builtin ssh URI is disabled or deleted; any SSH access to a repository marked inactive.
Common situations: Admins disabling SSH URIs in favor of HTTPS; read-only mirrors; newly created repositories before URI defaults settle; repositories deactivated during maintenance.
Related errors
- Expected `%s`!
- This repository is read-only over SSH (tried to execute prot
- This repository is read-only over SSH.
- Configuration file specifies cluster peer ("%s", at index "%
- This public key is already associated with another user or d
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/d39adab38bc9ab2a.
Report an issue: GitHub.