{"record":{"id":"e42865c795b0b62a","repo":"gastownhall/beads","slug":"jira-url-not-configured-run-bd-config-set-jira-ur","errorCode":null,"errorMessage":"jira.url not configured\nRun: bd config set jira.url \"https://company.atlassian.net\"","messagePattern":"jira\\.url not configured\nRun: bd config set jira\\.url \"https://company\\.atlassian\\.net\"","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/jira.go","lineNumber":340,"sourceCode":"\n\tif pendingPush > 0 {\n\t\tfmt.Println()\n\t\tfmt.Printf(\"Run 'bd jira sync --push' to push %d local issue(s) to Jira\\n\", pendingPush)\n\t}\n\treturn nil\n}\n\n// validateJiraConfig checks that required Jira configuration is present.\nfunc validateJiraConfig() error {\n\tif err := ensureStoreActive(); err != nil {\n\t\treturn fmt.Errorf(\"database not available: %w\", err)\n\t}\n\n\tctx := rootCtx\n\tjiraURL, _ := store.GetConfig(ctx, \"jira.url\")\n\n\tif jiraURL == \"\" {\n\t\treturn fmt.Errorf(\"jira.url not configured\\nRun: bd config set jira.url \\\"https://company.atlassian.net\\\"\")\n\t}\n\n\t// Check for project configuration (singular or plural).\n\tpluralProjects, _ := store.GetConfig(ctx, \"jira.projects\")\n\tsingularProject, _ := store.GetConfig(ctx, \"jira.project\")\n\tprojectKeys := tracker.ResolveProjectIDs(nil, pluralProjects, singularProject)\n\tif len(projectKeys) == 0 {\n\t\treturn fmt.Errorf(\"no Jira project configured\\nRun: bd config set jira.project \\\"PROJ\\\"\\nOr:  bd config set jira.projects \\\"PROJ1,PROJ2\\\"\")\n\t}\n\n\tapiToken, _ := store.GetConfig(ctx, \"jira.api_token\")\n\tif apiToken == \"\" && os.Getenv(\"JIRA_API_TOKEN\") == \"\" {\n\t\treturn fmt.Errorf(\"Jira API token not configured\\nRun: bd config set jira.api_token \\\"YOUR_TOKEN\\\"\\nOr: export JIRA_API_TOKEN=YOUR_TOKEN\")\n\t}\n\n\treturn nil\n}\n","sourceCodeStart":322,"sourceCodeEnd":358,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/jira.go#L322-L358","documentation":"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.","triggerScenarios":"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`.","commonSituations":"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.","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"],"exampleFix":"// before\n$ bd jira sync\njira.url not configured\n// after\n$ bd config set jira.url \"https://company.atlassian.net\"\n$ bd jira sync","handlingStrategy":"validation","validationCode":"url, _ := store.GetConfig(ctx, \"jira.url\")\nif strings.TrimSpace(url) == \"\" {\n    return errors.New(`jira.url not configured: bd config set jira.url \"https://company.atlassian.net\"`)\n}","typeGuard":null,"tryCatchPattern":"if err := runJiraSync(cmd, args); err != nil {\n    if strings.Contains(err.Error(), \"jira.url not configured\") {\n        fmt.Fprintln(os.Stderr, \"Set jira.url first: bd config set jira.url <url>\")\n        os.Exit(1)\n    }\n    return err\n}","preventionTips":["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"],"tags":["jira","configuration","validation"],"backgroundTag":"missing-config-key","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}