{"record":{"id":"cd518586231bfa5d","repo":"github/spec-kit","slug":"cannot-safely-create-update-backup-under-symlinked","errorCode":null,"errorMessage":"Cannot safely create update backup under symlinked directory '{backup_root}'","messagePattern":"Cannot safely create update backup under symlinked directory '(.+?)'","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/extensions/_commands.py","lineNumber":1750,"sourceCode":"                    skill_names,\n                    extension_id,\n                    skills_dir=skills_dir,\n                    create_skills_dir=False,\n                ):\n                    original_key = str(skill_dir)\n                    if original_key in backed_up_skill_dirs:\n                        continue\n                    backup_created_by_attempt = True\n                    backup_skills_dir.mkdir(parents=True, exist_ok=True)\n                    backup_skill_dir = backup_skills_dir / str(\n                        len(backed_up_skill_dirs)\n                    )\n                    shutil.copytree(skill_dir, backup_skill_dir, symlinks=True)\n                    backed_up_skill_dirs[original_key] = str(backup_skill_dir)\n\n            try:\n                if backup_root.is_symlink():\n                    raise RuntimeError(\n                        \"Cannot safely create update backup under symlinked \"\n                        f\"directory '{backup_root}'\"\n                    )\n                if backup_base.exists() or backup_base.is_symlink():\n                    raise RuntimeError(\n                        \"Cannot safely reuse an existing update backup \"\n                        f\"directory '{backup_base}'\"\n                    )\n\n                # 1. Backup registry entry (always, even if extension dir doesn't exist)\n                backup_registry_entry = manager.registry.get(extension_id)\n\n                # 2. Backup extension directory\n                extension_dir = manager.extensions_dir / extension_id\n                if extension_dir.exists():\n                    backup_created_by_attempt = True\n                    backup_base.mkdir(parents=True, exist_ok=True)\n                    if backup_ext_dir.exists():","sourceCodeStart":1732,"sourceCodeEnd":1768,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/extensions/_commands.py#L1732-L1768","documentation":"Error \"Cannot safely create update backup under symlinked directory '{backup_root}'\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/extensions/_commands.py:1750 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Replace the symlinked backup directory with a real directory, then retry the update."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c","analyzedAt":"2026-08-14T19:43:37.150Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}