github/spec-kit · error · SymlinkedSharedPathError

Refusing to overwrite symlinked shared infrastructure path:

Error message

Refusing to overwrite symlinked shared infrastructure path: {label}

What it means

Error "Refusing to overwrite symlinked shared infrastructure path: {label}" thrown in github/spec-kit.

Source

Thrown at src/specify_cli/shared_infra.py:251

            raise ValueError(f"Shared infrastructure directory escapes project root: {label}") from None


def _ensure_safe_shared_destination(
    project_path: Path,
    dest: Path,
    *,
    parent_must_exist: bool = True,
) -> None:
    """Refuse shared infra writes that would escape or follow symlinks."""
    root = project_path.resolve()
    _shared_relative_path(project_path, dest)
    if parent_must_exist:
        _ensure_safe_shared_directory(project_path, dest.parent, create=False)
    else:
        _validate_safe_shared_directory(project_path, dest.parent)
    label = _shared_destination_label(project_path, dest)
    if dest.is_symlink():
        raise SymlinkedSharedPathError(f"Refusing to overwrite symlinked shared infrastructure path: {label}")

    if dest.exists():
        try:
            dest.resolve().relative_to(root)
        except (OSError, ValueError):
            raise ValueError(f"Shared infrastructure destination escapes project root: {label}") from None


def _write_shared_text(project_path: Path, dest: Path, content: str) -> None:
    _write_shared_bytes(project_path, dest, content.encode("utf-8"))


def _write_shared_bytes(
    project_path: Path,
    dest: Path,
    content: bytes,
    *,
    mode: int = 0o644,

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Remove or replace the symlink at the target path before writing.

When it happens

Trigger: Thrown at src/specify_cli/shared_infra.py:251 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/97a199b85294f29c. Report an issue: GitHub.