{"record":{"id":"83f60afafb7386fb","repo":"paperclipai/paperclip","slug":"worktree-name-must-contain-only-letters-numbers","errorCode":null,"errorMessage":"Worktree name must contain only letters, numbers, dots, underscores, or dashes.","messagePattern":"Worktree name must contain only letters, numbers, dots, underscores, or dashes\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/src/commands/worktree.ts","lineNumber":303,"sourceCode":"    `reset running agents: ${summary.resetRunningAgents}`,\n    `quarantined in-progress issues: ${summary.quarantinedInProgressIssues}`,\n    `unassigned todo issues: ${summary.unassignedTodoIssues}`,\n    `unassigned review issues: ${summary.unassignedReviewIssues}`,\n    `stopped project workspace runtimes: ${summary.stoppedProjectWorkspaceRuntimes}`,\n    `stopped execution workspace runtimes: ${summary.stoppedExecutionWorkspaceRuntimes}`,\n    `stopped runtime services: ${summary.stoppedRuntimeServices}`,\n  ].join(\", \");\n}\n\nconst WORKTREE_NAME_PREFIX = \"paperclip-\";\n\nfunction resolveWorktreeMakeName(name: string): string {\n  const value = nonEmpty(name);\n  if (!value) {\n    throw new Error(\"Worktree name is required.\");\n  }\n  if (!/^[A-Za-z0-9._-]+$/.test(value)) {\n    throw new Error(\n      \"Worktree name must contain only letters, numbers, dots, underscores, or dashes.\",\n    );\n  }\n  return value.startsWith(WORKTREE_NAME_PREFIX) ? value : `${WORKTREE_NAME_PREFIX}${value}`;\n}\n\nfunction resolveWorktreeHome(explicit?: string): string {\n  return explicit ?? process.env.PAPERCLIP_WORKTREES_DIR ?? DEFAULT_WORKTREE_HOME;\n}\n\nfunction resolveWorktreeStartPoint(explicit?: string): string | undefined {\n  return explicit ?? nonEmpty(process.env.PAPERCLIP_WORKTREE_START_POINT) ?? undefined;\n}\n\ntype ConfiguredStorage = {\n  getObject(companyId: string, objectKey: string): Promise<Buffer>;\n  putObject(companyId: string, objectKey: string, body: Buffer, contentType: string): Promise<void>;\n};","sourceCodeStart":285,"sourceCodeEnd":321,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/cli/src/commands/worktree.ts#L285-L321","documentation":"Character-set guard on the worktree name: the name becomes a filesystem directory and a git branch label, so anything outside letters, numbers, dots, underscores, and dashes is rejected to keep both valid.","triggerScenarios":"Thrown at cli/src/commands/worktree.ts:270 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use only letters, numbers, dots, underscores, or dashes in the worktree name."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}