coollabsio/coolify · error · RuntimeException

Repository does not exist. Please check your repository URL

Error message

Repository does not exist. Please check your repository URL and try again.

What it means

Same 'fatal: repository ... does not exist' Git error, but raised through a non-deploy-key auth type (token, GitHub App, public HTTPS). Git could not resolve/read the repository at the given URL with the available credential, so Coolify surfaces it as 'Repository does not exist' — the URL/credential pairing is wrong, independent of deploy keys.

Source

Thrown at app/Models/Application.php:2172

                "cat .$workdir$composeFile",
            ]);
        }
        try {
            $composeFileContent = instant_remote_process($commands, $this->destination->server);
        } catch (\Exception $e) {
            // Restore original values on failure only
            $this->docker_compose_location = $initialDockerComposeLocation;
            $this->base_directory = $initialBaseDirectory;
            $this->save();

            if (str($e->getMessage())->contains('No such file')) {
                throw new RuntimeException("Docker Compose file not found at: $workdir$composeFile (branch: {$this->git_branch})<br><br>Check if you used the right extension (.yaml or .yml) in the compose file name.");
            }
            if (str($e->getMessage())->contains('fatal: repository') && str($e->getMessage())->contains('does not exist')) {
                if ($this->deploymentType() === 'deploy_key') {
                    throw new RuntimeException('Your deploy key does not have access to the repository. Please check your deploy key and try again.');
                }
                throw new RuntimeException('Repository does not exist. Please check your repository URL and try again.');
            }
            throw new RuntimeException('Failed to read the Docker Compose file from the repository.');
        } finally {
            // Cleanup only - restoration happens in catch block
            $commands = collect([
                "rm -rf /tmp/{$uuid}",
            ]);
            instant_remote_process($commands, $this->destination->server, false);
        }
        if ($composeFileContent) {
            $this->docker_compose_raw = $composeFileContent;
            $this->save();
            $parsedServices = $this->parse();
            if ($this->docker_compose_domains) {
                $this->reconcileDockerComposeDomains($parsedServices);
            }

            return [

View on GitHub (pinned to 70b9acc424)

Solutions

  1. Correct the repository URL in the application's source settings (owner/name exact, correct host).
  2. If the repo is private, refresh the credential: new PAT with repo scope, or reinstall the GitHub App for that org/user.
  3. Run git ls-remote on the URL from the destination server to reproduce the exact failure.
  4. After an org/repo rename, update the URL on every application that referenced the old path.
Defensive patterns

Strategy: validation

Validate before calling

// Validate URL shape and access before queueing a deployment
if (! ValidGitRepositoryUrl::validate($application->git_repository)) { /* reject bad URL */ }
$status = $application->getGitRemoteStatus(deployment_uuid: $uuid);
if (! $status['is_accessible']) { /* verify owner/name and token/App installation */ }

Try / catch

catch (RuntimeException $e) { if (str_contains($e->getMessage(), 'Repository does not exist')) { halt; ask user to fix URL or credential scope; do not retry unchanged. } else { throw $e; } }

Prevention

When it happens

Trigger: Typo'd repository URL (wrong owner, missing .git where required, stale org name after rename); private repo accessed with a token lacking scope or an expired token; GitHub App not installed on the target account/org; HTTP URL for an SSH-only internal Git.

Common situations: Organization or repository renamed and the stored URL now 404s; personal access token expired or revoked; GitHub App installation removed by an org admin; migrating from github.com to Enterprise with stale URLs.

Related errors


AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17). Data as JSON: /api/errors/3893772dfc0d4418. Report an issue: GitHub.