gastownhall/beads · error
jira.url not configured Run: bd config set jira.url "https:/
Error message
jira.url not configured Run: bd config set jira.url "https://company.atlassian.net"
What it means
validateJiraConfig requires the Jira instance URL before syncing. It reads the 'jira.url' config key; if empty, it returns this fixed message telling the user the exact config command. The Jira integration cannot form API requests without a base URL.
Source
Thrown at cmd/bd/jira.go:340
if pendingPush > 0 {
fmt.Println()
fmt.Printf("Run 'bd jira sync --push' to push %d local issue(s) to Jira\n", pendingPush)
}
return nil
}
// validateJiraConfig checks that required Jira configuration is present.
func validateJiraConfig() error {
if err := ensureStoreActive(); err != nil {
return fmt.Errorf("database not available: %w", err)
}
ctx := rootCtx
jiraURL, _ := store.GetConfig(ctx, "jira.url")
if jiraURL == "" {
return fmt.Errorf("jira.url not configured\nRun: bd config set jira.url \"https://company.atlassian.net\"")
}
// Check for project configuration (singular or plural).
pluralProjects, _ := store.GetConfig(ctx, "jira.projects")
singularProject, _ := store.GetConfig(ctx, "jira.project")
projectKeys := tracker.ResolveProjectIDs(nil, pluralProjects, singularProject)
if len(projectKeys) == 0 {
return fmt.Errorf("no Jira project configured\nRun: bd config set jira.project \"PROJ\"\nOr: bd config set jira.projects \"PROJ1,PROJ2\"")
}
apiToken, _ := store.GetConfig(ctx, "jira.api_token")
if apiToken == "" && os.Getenv("JIRA_API_TOKEN") == "" {
return fmt.Errorf("Jira API token not configured\nRun: bd config set jira.api_token \"YOUR_TOKEN\"\nOr: export JIRA_API_TOKEN=YOUR_TOKEN")
}
return nil
}
View on GitHub (pinned to 71377f2769)
Solutions
- Run: bd config set jira.url "https://company.atlassian.net"
- Verify with: bd config get jira.url
- Re-run the jira subcommand; other required keys (project, API token) are validated next
Example fix
// before $ bd jira sync jira.url not configured // after $ bd config set jira.url "https://company.atlassian.net" $ bd jira sync
Defensive patterns
Strategy: validation
Validate before calling
url, _ := store.GetConfig(ctx, "jira.url")
if strings.TrimSpace(url) == "" {
return errors.New(`jira.url not configured: bd config set jira.url "https://company.atlassian.net"`)
} Try / catch
if err := runJiraSync(cmd, args); err != nil {
if strings.Contains(err.Error(), "jira.url not configured") {
fmt.Fprintln(os.Stderr, "Set jira.url first: bd config set jira.url <url>")
os.Exit(1)
}
return err
} Prevention
- Set jira.url as part of workspace onboarding checklist
- Verify config keys with `bd config get` after team setup (keys are per-database, not global)
- Watch for key-name typos: it is jira.url, not jira_url
When it happens
Trigger: Running `bd jira sync|push|pull` in a workspace where `jira.url` was never set (or was set to an empty string) via `bd config set`.
Common situations: Fresh workspace where Jira was configured on another machine but config keys were never committed/synced; typo'd key name (e.g., jira_url); team onboarding without the setup doc.
Related errors
- no Jira project configured Run: bd config set jira.project "
- identity: invalid proxy secret
- backend must be set
- repo %q must use OWNER/REPO or HOST/OWNER/REPO
- repo %q contains an empty path component
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/e42865c795b0b62a.
Report an issue: GitHub.