{"record":{"id":"b7cd09316175a5b5","repo":"go-task/task","slug":"prompt-cancelled-b7cd09","errorCode":null,"errorMessage":"prompt cancelled","messagePattern":"prompt cancelled","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"internal/logger/logger.go","lineNumber":20,"sourceCode":"\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/Ladicle/tabwriter\"\n\t\"github.com/fatih/color\"\n\n\t\"github.com/go-task/task/v3/errors\"\n\t\"github.com/go-task/task/v3/experiments\"\n\t\"github.com/go-task/task/v3/internal/env\"\n\t\"github.com/go-task/task/v3/internal/term\"\n)\n\nvar (\n\tErrPromptCancelled = errors.New(\"prompt cancelled\")\n\tErrNoTerminal      = errors.New(\"no terminal\")\n)\n\nvar (\n\tattrsReset       = envColor(\"COLOR_RESET\", color.Reset)\n\tattrsFgBlue      = envColor(\"COLOR_BLUE\", color.FgBlue)\n\tattrsFgGreen     = envColor(\"COLOR_GREEN\", color.FgGreen)\n\tattrsFgCyan      = envColor(\"COLOR_CYAN\", color.FgCyan)\n\tattrsFgYellow    = envColor(\"COLOR_YELLOW\", color.FgYellow)\n\tattrsFgMagenta   = envColor(\"COLOR_MAGENTA\", color.FgMagenta)\n\tattrsFgRed       = envColor(\"COLOR_RED\", color.FgRed)\n\tattrsFgHiBlue    = envColor(\"COLOR_BRIGHT_BLUE\", color.FgHiBlue)\n\tattrsFgHiGreen   = envColor(\"COLOR_BRIGHT_GREEN\", color.FgHiGreen)\n\tattrsFgHiCyan    = envColor(\"COLOR_BRIGHT_CYAN\", color.FgHiCyan)\n\tattrsFgHiYellow  = envColor(\"COLOR_BRIGHT_YELLOW\", color.FgHiYellow)\n\tattrsFgHiMagenta = envColor(\"COLOR_BRIGHT_MAGENTA\", color.FgHiMagenta)\n\tattrsFgHiRed     = envColor(\"COLOR_BRIGHT_RED\", color.FgHiRed)\n)","sourceCodeStart":2,"sourceCodeEnd":38,"githubUrl":"https://github.com/go-task/task/blob/385e5ad92af02877b6d7cf9dcc963b5ed916e70a/internal/logger/logger.go#L2-L38","documentation":"internal/logger defines ErrPromptCancelled, returned by Logger.Prompt when the user declines a confirmation (e.g. answering anything outside the accepted continue values, or cancelling). Callers map it to a user-cancelled task result.","triggerScenarios":"Logger.Prompt(color, prompt, defaults, continueValues...) is called (e.g. task.go:244 for internal call confirmation) and the typed input, lowercased/trimmed, is not in the continue values list.","commonSituations":"User answers 'n'/esc at a 'proceed?' confirmation prompt when running a task with internal calls; automation answers with an unexpected string.","solutions":["Answer the prompt with an accepted value (e.g. 'y', 'yes') to proceed","Handle it with errors.Is(err, logger.ErrPromptCancelled) and surface a graceful TaskCancelledByUserError / clean exit","Pipe 'y' into stdin for non-interactive automation to auto-confirm"],"exampleFix":"// before\nif err := e.Logger.Prompt(logger.Yellow, p, \"n\", \"y\", \"yes\"); err != nil {\n    return err\n}\n// after\nif err := e.Logger.Prompt(logger.Yellow, p, \"n\", \"y\", \"yes\"); err != nil {\n    if errors.Is(err, logger.ErrPromptCancelled) {\n        return &errors.TaskCancelledByUserError{TaskName: call.Task}\n    }\n    return err\n}","handlingStrategy":"try-catch","validationCode":"// Not pre-validatable; ensure stdin is interactive or pre-answer confirmations:\nif !isInteractive(os.Stdin) {\n    // echo \"y\" | task ... or use --force/non-interactive flags\n}","typeGuard":"func isPromptCancelled(err error) bool {\n    return errors.Is(err, logger.ErrPromptCancelled)\n}","tryCatchPattern":"if err := e.Logger.Prompt(logger.Yellow, p, \"n\", \"y\", \"yes\"); err != nil {\n    switch {\n    case errors.Is(err, logger.ErrNoTerminal):\n        return &errors.TaskCancelledNoTerminalError{TaskName: name}\n    case errors.Is(err, logger.ErrPromptCancelled):\n        return &errors.TaskCancelledByUserError{TaskName: name}\n    default:\n        return err\n    }\n}","preventionTips":["Use errors.Is against logger.ErrPromptCancelled, never string matching","For automation, pipe 'y' into stdin or use non-interactive modes","Only prompt when a TTY is attached; otherwise fail fast with ErrNoTerminal handling"],"tags":["prompt","confirmation","user-cancel"],"backgroundTag":"prompt-cancelled","analyzedSha":"385e5ad92af02877b6d7cf9dcc963b5ed916e70a","analyzedAt":"2026-09-05T09:01:05.226Z","contentChangedAt":"2026-09-05T09:01:05.226Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}