| Path "${targetPath}" is not a directory | exception | error | |
| Cannot access path "${targetPath}": ${error.message} | exception | error | |
| Change "${changeName}" not found at ${proposalPath} | exception | error | |
| Change "${changeName}" has no proposal.md yet. Run "openspec | exception | error | |
| Change "${changeName}" not found at ${changeDir} | exception | error | |
context_file_exists Refusing to overwrite ${resolved}. | exception | error | |
context_output_dir_missing Output directory does not exist: ${parent}. | exception | error | |
| Cannot fork schema with linked or unsupported entry: ${sourc | exception | error | |
| Cannot fork schema with a linked directory cycle: ${src} | exception | error | |
| Cannot fork schema with linked or unsupported entry: ${srcPa | exception | error | |
| Cannot fork schema with linked or unsupported entry: ${entry | exception | error | |
| Cannot fork schema '${source}' onto itself; choose a differe | exception | error | |
| The staged fork of '${source}' is not a valid schema (the so | exception | error | |
| Schema '${destinationName}' at ${destinationDir} changed on | exception | error | |
| Failed to install the forked schema and could not restore th | exception | error | |
| Path is outside the allowed directory: ${specPath} | exception | error | |
| Requirement ${requirementOpt} not found | exception | error | |
| Missing required argument <spec-id> | exception | error | |
| Spec '${specId}' not found at ${displayPath} | exception | error | |
| Options --requirements and --requirement cannot be used toge | exception | error | |
| Spec '${specId}' not found at openspec/specs/${specId}/spec. | exception | error | |
store_setup_id_required Pass a store name. | exception | error | |
store_setup_path_required Pass --path with the folder where this store should live. | exception | error | |
store_setup_cancelled Store setup cancelled. | exception | error | |
store_remove_confirmation_required Pass --yes to delete store files non-interactively. | exception | error | |
store_remove_cancelled Store remove cancelled. | exception | error | |
store_register_cancelled Store register cancelled. | exception | error | |
| Missing required argument <artifact>. Valid artifacts:
${v | exception | error | |
| Artifact '${artifactId}' not found in schema '${context.sche | exception | error | |
initiative_option_removed --initiative is no longer supported. Normal changes no longer attach to initiati | exception | error | |
areas_option_removed --areas is no longer supported. Workspace affected areas are not part of the nor | exception | error | |
| Missing required argument <name> | exception | error | |
| ${validation.error} | validation | error | |
| No changes found. Create one with: ${newChangeHint} | exception | error | |
| Missing required option --change. Available changes:
${ava | exception | error | |
| Invalid change name '${changeName}': ${lookupError} | exception | error | |
| Change '${changeName}' not found. No changes exist. Create o | exception | error | |
| Change '${changeName}' not found. Available changes:
${ava | exception | error | |
| Schema '${schemaName}' not found. Available schemas:
${ava | exception | error | |
| Missing required option --change. Available changes:
${ava | exception | error | |
| Template '${artifact.template}' for artifact '${artifact.id} | exception | error | |
workset_name_required Pass a workset name. | exception | error | |
workset_members_required Pass at least one member folder. | exception | error | |
workset_open_json_unsupported workset open hands this terminal to the chosen tool and has no JSON mode. | exception | error | |
workset_no_members_available No member folder of workset '${name}' exists on this machine. | exception | error | |
workset_tool_required Workset '${name}' has no saved tool. | exception | error | |
workset_launch_failed error.message | exception | error | |
workset_remove_confirmation_required Pass --yes to remove a workset non-interactively. | exception | error | |
workset_remove_cancelled Workset remove cancelled. | exception | error | |
| Cannot archive unsupported filesystem entry: ${srcPath} | exception | error | |
| Expected a directory while verifying ${dir}. | exception | error | |
| Path changed while archive was reading ${entryPath}. | exception | error | |
| Directory changed while archive was reading ${dir}. | exception | error | |
| Change directory contents changed during the fallback copy f | exception | error | |
archive_target_exists Archive '${path.basename(dest)}' already exists. | exception | error | |
| Could not safely stage ${src} before the fallback archive co | exception | error | |
| ${copyError instanceof Error ? copyError.message : String(co | exception | error | |
| ${verificationError instanceof Error ? verificationError.mes | exception | error | |
| Copied ${src} to ${dest}, but could not remove the staged so | exception | error | |
| Path changed while archive was reading ${filePath}. | exception | error | |
| The ${METADATA_FILENAME} retirement authorization changed be | exception | error | |
| Spec updates for '${existing}' and '${mutation.update.id}' r | exception | error | |
| Archive rollback would overwrite a concurrent change at ${sn | exception | error | |
| Archive rollback would overwrite a concurrent change at ${sn | exception | error | |
| errors.map(({ message }) => message).join(' ') | exception | error | |
| ${errors.join(' ')} The change remains archived and each lis | exception | error | |
archive_path_outside_root Refusing to archive through a path outside the OpenSpec root: ${managedDir} | exception | error | |
archive_change_name_required A change name is required: archive --json is non-interactive. | exception | error | |
archive_change_name_invalid changeNameProblem | validation | error | |
archive_change_symlink Change '${changeName}' is a symbolic link. Replace it with a real directory befo | exception | error | |
archive_change_not_found Change '${changeName}' not found. Available changes: ${available.join(', ')} | exception | error | |
archive_validation_failed Validation failed for change '${changeName}'. | exception | error | |
archive_confirmation_required Skipping validation requires confirmation: rerun with --yes. | exception | error | |
archive_tasks_incomplete ${incompleteTasks} incomplete task(s) found for change '${changeName}'. | exception | error | |
| Spec inputs for '${update.id}' changed while archive was pre | exception | error | |
| The ${METADATA_FILENAME} retirement authorization changed wh | exception | error | |
| The change specs changed while archive was awaiting confirma | exception | error | |
| The delta for '${proposed.update.id}' changed while archive | exception | error | |
| Spec inputs for '${proposed.update.id}' changed while archiv | exception | error | |
| Main spec '${proposed.update.id}' changed while archive was | exception | error | |
archive_spec_update_failed message | exception | error | |
archive_spec_validation_failed Rebuilt spec for '${specName}' failed validation. No files were changed. | exception | error | |
| Spec inputs for '${proposed.update.id}' changed before archi | exception | error | |
| Spec inputs for '${p.update.id}' changed before archive coul | exception | error | |
| The ${METADATA_FILENAME} retirement authorization is unavail | exception | error | |
| Spec inputs for '${p.update.id}' changed before archive coul | exception | error | |
| Main spec '${p.update.id}' changed while archive was securin | exception | error | |
| Could not track the displaced main spec for '${p.update.id}' | exception | error | |
| The delta for '${proposed.update.id}' changed before the cha | exception | error | |
| The archived delta for '${proposed.update.id}' changed durin | exception | error | |
| The active delta for '${proposed.update.id}' changed during | exception | error | |
| ${error.message} ${cleanupError instanceof Error ? cleanupEr | exception | error | |
| ${original} Rollback also failed: ${rollbackErrors.map(({ me | exception | error | |
| Schema '${schemaName}' not found | exception | error | |
| error instanceof Error ? error.message : String(error) | exception | error | |
| Template not found: ${templatePathOnDisk} | exception | error | |
| Failed to read template: ${ioError.message} | exception | error | |
| Artifact '${artifactId}' not found in schema '${context.sche | exception | error | |
| Cannot resolve artifact outputs through a linked directory c | exception | error | |
| Schema '${normalizedName}' not found. Available schemas: ${a | exception | error | |
| Failed to read schema at '${schemaPath}': ${ioError.message} | exception | error | |
| Invalid schema at '${schemaPath}': ${err.message} | exception | error | |
| Failed to parse schema at '${schemaPath}': ${parseError.mess | exception | error | |
| Invalid schema: ${errors} | exception | error | |
| Duplicate artifact ID: ${artifact.id} | exception | error | |
| Invalid dependency reference in artifact '${artifact.id}': ' | exception | error | |
| Cyclic dependency detected: ${cycle} | exception | error | |
| Unsupported shell: ${shell} | exception | error | |
| Path is not writable: ${targetPath} | exception | error | |
| Path is not writable: ${targetPath} | exception | error | |
| Path is not writable: ${targetDir} | exception | error | |
| File is encoded as UTF-16 BE which is not supported. Please | exception | error | |
| Path is not writable: ${profilePath} | exception | error | |
| Path is not writable: ${targetPath} | exception | error | |
| Path is not writable: ${targetDir} | exception | error | |
| Path is not writable: ${targetPath} | exception | error | |
| Parent path is not a directory: ${candidate} | exception | error | |
| Cannot resolve a directory ancestor for: ${filePath} | exception | error | |
| Managed Copilot path is not a regular file: ${filePath} | exception | error | |
| Conflicting Copilot agent profiles: preserve either ${COPILO | exception | error | |
| The store declaration in ${pointer.filePath} is invalid (${s | exception | error | |
| This repo's planning is externalized to store '${pointer.val | exception | error | |
| OpenSpec setup failed for: ${results.failedTools.map((tool) | exception | error | |
| Insufficient permissions to write to ${projectPath} | exception | error | |
| Invalid profile "${this.profileOverride}". Available profile | exception | error | |
| No tools detected and no --tools flag provided. Valid tools: | exception | error | |
| No tools available for skill generation. | exception | error | |
| At least one tool must be selected | exception | error | |
| The --tools option requires a value. Use "all", "none", or a | exception | error | |
| The --tools option requires at least one tool ID when not us | exception | error | |
| Cannot combine reserved values "all" or "none" with specific | exception | error | |
| Invalid tool(s): ${invalidTokens.join(', ')}. Available valu | exception | error | |
| Unknown tool '${toolId}'. Valid tools:
${validToolIds.join | exception | error | |
| Tool '${toolId}' does not support skill generation.
Tools wi | exception | error | |
| The --language option requires a non-empty value. | exception | error | |
| The --language option must be a single line without control | exception | error | |
| The --language option is too long for OpenSpec's ${MAX_CONTE | exception | error | |
| Cannot create openspec/config.yaml for --language${reason} | exception | error | |
| Cannot create openspec/config.yaml for --language: the desti | validation | error | |
| --language does not overwrite an existing OpenSpec config. A | validation | error | |
| Failed to create openspec/config.yaml for --language${reason | exception | error | |
| buildLaunchCommand requires at least one member. | validation | error | |
| buildLaunchCommand requires an absolute workspace-file path | validation | error | |
| ${relativePath}/ exists but is not a directory. | validation | error | |
| OpenSpec config path exists but is not a file. | validation | error | |
| Store root is not a directory. | validation | error | |
| Change must have a Why section | validation | error | |
| Change must have a What Changes section | validation | error | |
| Spec must have a Purpose section | validation | error | |
| Spec must have a Requirements section | validation | error | |
| Change must have a Why section | validation | error | |
| Change must have a What Changes section | validation | error | |
| No OpenSpec planning home found from the current directory. | validation | error | |
no_registered_stores Unknown store '${id}'. No stores are registered. | error_code | error | |
unknown_store Unknown store '${id}'. Registered stores: ${entries.map((candidate) => candidate | error_code | error | |
store_identity_mismatch Store '${id}' is missing identity metadata at ${inspection.metadataPath}. ${doct | error_code | error | |
unhealthy_store_root Store '${id}' does not have a healthy OpenSpec root at ${storeRoot}: ${inspectio | exception | error | |
invalid_store_pointer Invalid store declaration in ${pointer.filePath}: ${problem}. | exception | error | |
| Declared in ${pointer.filePath}: ${error.message} | exception | error | |
| Global defaultStore '${id}': ${error.message} | exception | error | |
store_path_not_supported --store-path is not supported. Register the path with openspec store register <p | exception | error | |
no_root_with_registered_stores No OpenSpec root found in the current directory or its ancestors. Registered sto | exception | error | |
no_openspec_root No OpenSpec root found from the current directory. | exception | error | |
| Tool '${tool.value}' does not support skill generation. | exception | error | |
| Path is outside the allowed directory: ${specPath} | validation | error | |
| ${specName} validation failed - duplicate requirement in ADD | validation | error | |
| ${specName} validation failed - duplicate requirement in MOD | validation | error | |
| ${specName} validation failed - duplicate requirement in REM | validation | error | |
| ${specName} validation failed - duplicate FROM in RENAMED fo | validation | error | |
| ${specName} validation failed - duplicate TO in RENAMED for | validation | error | |
| ${specName} validation failed - requirement present in multi | validation | error | |
| ${specName} validation failed - when a rename exists, MODIFI | validation | error | |
| ${specName} validation failed - RENAMED TO header collides w | validation | error | |
| ${specName} validation failed - requirement present in multi | validation | error | |
| Delta parsing found no operations for ${update.id}. Provide | exception | error | |
| ${specName}: target spec does not exist; only ADDED requirem | exception | error | |
| ${specName}: target spec is structurally invalid and cannot | exception | error | |
| ${specName} RENAMED failed for header "### Requirement: ${r. | exception | error | |
| ${specName} RENAMED failed for header "### Requirement: ${r. | exception | error | |
| ${specName} RENAMED failed for header "### Requirement: ${r. | exception | error | |
| ${specName} REMOVED failed for header "### Requirement: ${na | exception | error | |
| ${specName} MODIFIED failed for header "### Requirement: ${m | exception | error | |
| ${specName} MODIFIED failed for header "### Requirement: ${m | exception | error | |
| ${specName} MODIFIED failed for header "### Requirement: ${m | exception | error | |
| ${specName} ADDED failed for header "### Requirement: ${add. | exception | error | |
| Could not retire capability '${update.id}': could not verify | exception | error | |
| Could not retire capability '${update.id}': could not verify | exception | error | |
| Could not retire capability '${update.id}': ${update.target} | exception | error | |
| A concurrent file appeared at ${update.target} while archive | exception | error | |
| ${error instanceof Error ? error.message : String(error)} A | exception | error | |
| Could not retire capability '${update.id}': failed to delete | exception | error | |
invalid_store_id ${folderProblem} | error_code | error | |
| Store local path must not be empty. | validation | error | |
| Store local path does not exist: ${input.localPath} | validation | error | |
| Store backend remote must not be empty when provided. | validation | error | |
| Store branch must not be empty when provided. | validation | error | |
store_git_init_failed Failed to initialize Git repository: ${error instanceof Error ? error.message : | error_code | error | |
store_git_identity_missing No usable Git commit identity is configured, so setup cannot create the initial | error_code | error | |
store_git_commit_failed Failed to create the initial store commit: ${error instanceof Error ? error.mess | error_code | error | |
invalid_store_metadata ${error instanceof Error ? error.message : String(error)} | error_code | error | |
invalid_store_pointer The store declaration in ${pointer.filePath} is invalid (${storePointerProblem(p | error_code | error | |
store_root_pointer_declared This repo's planning is externalized to store '${pointer.value}' (${pointer.file | error_code | error | |
store_setup_inside_git_repo Store setup path is inside another Git repository: ${containingGitRoot} | error_code | error | |
store_setup_path_required Pass --path with the folder where this store should live. | error_code | error | |
store_path_required Pass a store path. | error_code | error | |
store_remote_empty Store remote must not be empty when provided. | error_code | error | |
store_setup_path_not_directory Store setup path is not a directory: ${storeRoot} | error_code | error | |
store_metadata_id_mismatch Store metadata id '${metadata.id}' does not match requested id '${id}'. | error_code | error | |
store_setup_non_empty_directory Store setup does not support initializing a non-empty folder that is not a healt | error_code | error | |
store_setup_path_changed The path ${storeRoot} was created while setup was waiting for confirmation. | error_code | error | |
store_path_missing Store path does not exist: ${storeRoot} | error_code | error | |
store_path_not_directory Store path is not a directory: ${storeRoot} | error_code | error | |
store_register_root_unhealthy Store register requires an existing healthy OpenSpec root. ${problems}${emptyClo | error_code | error | |
store_register_identity_confirmation_required Turn this OpenSpec root into store '${id}'? | error_code | error | |
store_remove_path_not_directory Store path is not a directory: ${storeRoot} | error_code | error | |
store_remove_metadata_missing Store remove refuses to delete a folder without store metadata. | error_code | error | |
store_not_found Unknown store '${selectedId}'. | error_code | error | |
store_id_conflict Store '${id}' is already registered at ${getStoreRootForBackend(entry.backend)}. | error_code | error | |
store_path_conflict Store path is already registered as '${entry.id}'. | error_code | error | |
store_not_found Unknown store '${id}' | error_code | error | |
store_registry_changed Store '${id}' changed before cleanup completed. | error_code | error | |
store_metadata_missing Registered store '${id}' is missing metadata at ${getStoreMetadataPath(storeRoot | error_code | error | |
store_metadata_id_mismatch Store metadata id '${metadata.id}' does not match registered id '${id}' | error_code | error | |
no_store_registry No store registry found | error_code | error | |
| No OpenSpec directory found. Run 'openspec init' first. | exception | error | |
| OpenSpec update failed for: ${failedTools.map((tool) => tool | exception | error | |
invalid_workset_name Workset name '${name}' ${KEBAB_ID_DESCRIPTION}. | error_code | error | |
workset_exists Workset '${workset.name}' already exists. | error_code | error | |
| Unknown schema '${schemaName}'. Available: ${availableSchema | validation | error | |
| Invalid metadata: ${parseResult.error.message} | validation | error | |
| Failed to write metadata: ${ioError.message} | exception | error | |
| Failed to read metadata: ${ioError.message} | exception | error | |
| Invalid YAML in metadata file: ${parseError.message} | validation | error | |
| Unknown schema '${parseResult.data.schema}'. Available: ${av | validation | error | |
| ${validation.error} | validation | error | |
| Change '${name}' already exists at ${changeDir} | exception | error | |
| Path is outside the allowed directory: ${targetPath} | exception | error | |
| Refusing to manage an artifact outside the project: ${artifa | exception | error | |
| Cannot verify dangling symbolic link: ${existingPath} | exception | error | |
| Cannot resolve an existing parent for ${targetPath} | exception | error | |
| Invalid marker state in ${filePath}. End marker appears befo | exception | error | |
| Invalid marker state in ${filePath}. Found start: ${startInd | exception | error | |
| Rewrote ${seen} of ${totalHexLiterals} 64-hex literals in ${ | exception | error | |
| getSkillTemplates() returns ${unpinned.length} skill(s) with | exception | error | |
| dist/ is missing. Run `pnpm build` first - hashes are comput | exception | error | |
| dist/ is older than src/, so the hashes would be computed fr | exception | error | |
| Refusing to generate: ${join(outDir, entry.name)} is a symli | exception | error | |
| Refusing to generate: unsafe skill directory name ${JSON.str | exception | error | |
| Refusing to write through ${skillDir}: not a real directory. | exception | error | |
| Warning: Skipping ${profilePath}: ${err?.message ?? String(e | console | error | |
| Warning: Could not configure ${profilePath}: ${error} | console | error | |
| Warning: Could not read ${profilePath}: ${err?.message ?? St | console | error | |
| Warning: Found start marker but no end marker in ${profilePa | console | error | |
| Warning: Could not clean ${profilePath}: ${error} | console | error | |
| Invalid 'operations' field in config (must be object) | console | error | |
| Unknown operation ID '${operationId}' in config. Supported o | console | error | |
| Invalid 'operations.${operationId}' field in config (must be | console | error | |
| Unknown field(s) in 'operations.${operationId}': ${unknownFi | console | error | |
| Guidance for operation '${operationId}' must be an array of | console | error | |
| Some guidance for operation '${operationId}' are empty strin | console | error | |
| Invalid '${fieldName}' field in config (must be an array of | console | error | |
| Some '${fieldName}' entries are invalid, ignoring them | console | error | |
| Some '${fieldName}' remotes are not non-empty strings; the i | console | error | |
| openspec/config.yaml is not a valid YAML object | console | error | |
| Invalid 'schema' field in config (must be non-empty string) | console | error | |
| Context too large (${(contextSize / 1024).toFixed(1)}KB, lim | console | error | |
| Ignoring context field | console | error | |
| Invalid 'context' field in config (must be string) | console | error | |
| Some rules for '${artifactId}' are empty strings, ignoring t | console | error | |
| Rules for '${artifactId}' must be an array of strings, ignor | console | error | |
| Invalid 'rules' field in config (must be object) | console | error | |
| Warning: ignoring invalid store: field in ${configPathForWar | console | error | |
| Invalid 'githubCopilot.cloudAgent' field in config (must be | console | error | |
| Invalid 'githubCopilot' field in config (must be object) | console | error | |
| Warning: could not parse ${configPathForWarnings(projectRoot | console | error | |
| Warning: failed to sync Copilot cloud agent files: ${message | console | error | |
| Skipping legacy ${legacy.root}/ migration because the direct | console | error | |
| Skipping legacy ${legacyRoot}/skills/${dirName} migration be | console | error | |
| Skipping legacy ${legacyPath} migration because it resolves | console | error | |
| ${specName} - delta Purpose ignored; ${specName} already has | console | error | |
| ${specName} - ${plan.removed.length} REMOVED requirement(s) | console | error | |