github/spec-kit · error · IntegrationValidationError

Failed to read catalog config {config_path}: {exc}

Error message

Failed to read catalog config {config_path}: {exc}

What it means

Error "Failed to read catalog config {config_path}: {exc}" thrown in github/spec-kit.

Source

Thrown at src/specify_cli/integrations/catalog.py:413

        The URL is normalized (whitespace stripped) and validated before being
        written. Duplicate URLs are rejected, including near-duplicates that
        differ only by surrounding whitespace. Priority is derived as
        ``max(existing) + 1`` so the new entry sorts last in the resolution
        order unless the user edits the file manually.
        """
        url = url.strip()
        if not url:
            raise IntegrationValidationError("Catalog URL must be non-empty.")
        self._validate_catalog_url(url)
        config_path = self.project_root / ".specify" / self.CONFIG_FILENAME

        data: Dict[str, Any] = {"catalogs": []}
        if config_path.exists():
            try:
                raw = yaml.safe_load(config_path.read_text(encoding="utf-8"))
            except (yaml.YAMLError, OSError, UnicodeError) as exc:
                raise IntegrationValidationError(
                    f"Failed to read catalog config {config_path}: {exc}"
                ) from exc
            if raw is None:
                raw = {}
            if not isinstance(raw, dict):
                raise IntegrationValidationError(
                    f"Catalog config file {config_path} is corrupted "
                    "(expected a mapping)."
                )
            data = raw

        catalogs = data.get("catalogs", [])
        if not isinstance(catalogs, list):
            raise IntegrationValidationError(
                f"Catalog config {config_path} has invalid 'catalogs' value: "
                "must be a list."
            )

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Fix permissions or corruption on the catalog config file, or delete it so a fresh config is created.

When it happens

Trigger: Thrown at src/specify_cli/integrations/catalog.py:413 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14). Data as JSON: /api/errors/d58507519c70aa65. Report an issue: GitHub.