gastownhall/beads · error
--contributor requires interactive prompts and cannot be use
Error message
--contributor requires interactive prompts and cannot be used with --non-interactive
What it means
The contributor/team wizard is an interactive prompt flow; combining --contributor with --non-interactive fails fast because the wizard cannot run without a TTY-driven prompt session.
Source
Thrown at cmd/bd/init.go:580
}
// Resolve non-interactive mode: flag > env var > terminal detection.
// This must be computed before any interactive prompts.
nonInteractive := isNonInteractiveInit(nonInteractiveFlag)
// Validate --role flag value
if roleFlag != "" {
switch roleFlag {
case "maintainer", "contributor":
// valid
default:
return fmt.Errorf("invalid --role %q: must be \"maintainer\" or \"contributor\"", roleFlag)
}
}
// Fail-fast: contributor/team wizards require interaction
if nonInteractive && contributor {
return fmt.Errorf("--contributor requires interactive prompts and cannot be used with --non-interactive")
}
if nonInteractive && team {
return fmt.Errorf("--team requires interactive prompts and cannot be used with --non-interactive")
}
// Dolt is the only supported backend.
backend := configfile.BackendDolt
// Also treat BEADS_DOLT_SERVER_MODE=1 env var as --server.
if os.Getenv("BEADS_DOLT_SERVER_MODE") == "1" {
initServerMode = true
}
// Shared server mode still uses a Dolt sql-server, so it must select
// the server-backed store path during init. Without this, init can
// persist shared-server intent in YAML while still creating an embedded
// store and recording dolt_mode=embedded in metadata.json (GH#2946).
if sharedServer || strings.EqualFold(os.Getenv("BEADS_DOLT_SHARED_SERVER"), "true") || os.Getenv("BEADS_DOLT_SHARED_SERVER") == "1" {View on GitHub (pinned to 71377f2769)
Solutions
- Run `bd init --contributor` in an interactive terminal without --non-interactive
- For automation, use non-wizard init flags instead of the contributor wizard
- If your terminal detection is wrong (piped TTY), remove any BEADS_* non-interactive env vars
Example fix
// before bd init --contributor --non-interactive // after bd init --contributor # run interactively
Defensive patterns
Strategy: validation
Validate before calling
if contributor && nonInteractive {
return fmt.Errorf("--contributor requires an interactive terminal; drop --non-interactive")
} Try / catch
if err := bdInit("--contributor", "--non-interactive"); err != nil {
if strings.Contains(err.Error(), "requires interactive prompts") {
// rerun interactively or switch to non-wizard flags
}
} Prevention
- Never combine wizard flags (--contributor/--team) with --non-interactive
- Run wizard flows only in TTY sessions, not CI
- Check/clear BEADS_* non-interactive env vars before invoking
When it happens
Trigger: `bd init --contributor --non-interactive` (or --non-interactive supplied via env var / terminal detection per isNonInteractiveInit) together with --contributor.
Common situations: CI/CD or scripted setups trying to automate the contributor onboarding wizard; running bd init from a non-TTY environment (CI runner, nohup) while also passing --contributor.
Related errors
- --team requires interactive prompts and cannot be used with
- --server and --proxied-server are mutually exclusive
- --proxied-server cannot be combined with --shared-server, --
- --team-server requires --proxied-server
- --proxied-server-config-path requires --proxied-server
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/24a57ca6354d1825.
Report an issue: GitHub.