infiniflow/ragflow · error · ConnectorValidationError
None of the specified GitHub repositories could be found for
Error message
None of the specified GitHub repositories could be found for owner: {self.repo_owner} What it means
ConnectorValidationError raised on HTTP 404 when 'repositories' contains a comma (multi-repo mode). Because GitHub hides private repos you cannot access as 404, this means none of the listed repositories were visible to the credential under repo_owner.
Source
Thrown at common/data_source/github/connector.py:748
user = self.github_client.get_user(self.repo_owner)
# Check if we can access any repos
total_count = user.get_repos().totalCount
if total_count == 0:
raise ConnectorValidationError(f"Found no repos for user: {self.repo_owner}. Does the credential have the right scopes?")
except RateLimitExceededException:
raise UnexpectedValidationError("Validation failed due to GitHub rate-limits being exceeded. Please try again later.")
except GithubException as e:
if e.status == 401:
raise CredentialExpiredError("GitHub credential appears to be invalid or expired (HTTP 401).")
elif e.status == 403:
raise InsufficientPermissionsError("Your GitHub token does not have sufficient permissions for this repository (HTTP 403).")
elif e.status == 404:
if self.repositories:
if "," in self.repositories:
raise ConnectorValidationError(f"None of the specified GitHub repositories could be found for owner: {self.repo_owner}")
else:
raise ConnectorValidationError(f"GitHub repository not found with name: {self.repo_owner}/{self.repositories}")
else:
raise ConnectorValidationError(f"GitHub user or organization not found: {self.repo_owner}")
else:
raise ConnectorValidationError(f"Unexpected GitHub error (status={e.status}): {e.data}")
except Exception as exc:
raise Exception(f"Unexpected error during GitHub settings validation: {exc}")
def validate_checkpoint_json(self, checkpoint_json: str) -> GithubConnectorCheckpoint:
return GithubConnectorCheckpoint.model_validate_json(checkpoint_json)
def retrieve_slim_document(
self,
start: SecondsSinceUnixEpoch | None = None,
end: SecondsSinceUnixEpoch | None = None,
callback: Any = None,View on GitHub (pinned to 554fb1133a)
Solutions
- Check each 'owner/repo' spelling via the GitHub UI or gh repo view owner/repo.
- If repos are private, grant the token access (repo scope / fine-grained allowlist) — remember GitHub returns 404 for invisible private repos.
- Confirm repo_owner matches the account that actually hosts the repos.
Defensive patterns
Strategy: validation
Validate before calling
for name in repositories.split(','):
if not repo_exists(gh, owner, name.strip()):
collect_typo(name.strip()) # note: private+no-access also looks like a typo Try / catch
try:
connector.validate_connector_settings()
except ConnectorValidationError as e:
return 400, str(e) Prevention
- Copy repo names exactly from the GitHub URL; beware renames/transfers.
- Remember GitHub 404s invisible private repos — check token access before assuming a typo.
When it happens
Trigger: 404 from the validation probe with repositories='a,b' — every name wrong, private-without-access, or the owner segment of owner/repo is incorrect.
Common situations: Typos in repo names; repo renamed or transferred; private repo with a public-only token (GitHub reports 404, not 403); owner set to the wrong org.
Related errors
- GitHub repository not found with name: {self.repo_owner}/{se
- GitHub user or organization not found: {self.repo_owner}
- main() returned a non-JSON-serializable value.
- Invalid connector settings: No valid repository names provid
- None of the specified repositories could be accessed: {valid
AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15).
Data as JSON: /api/errors/f9f6de202b96031d.
Report an issue: GitHub.