{"record":{"id":"6255b9da99dc37e0","repo":"can1357/oh-my-pi","slug":"unknown-oauth-provider-providerarg-known","errorCode":null,"errorMessage":"Unknown OAuth provider '${providerArg}'. Known: ${providers\n\t\t\t\t.map(p => p.id)\n\t\t\t\t.sort()\n\t\t\t\t.join(\", \")}","messagePattern":"Unknown OAuth provider '(.+?)'\\. Known: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/coding-agent/src/cli/auth-broker-cli.ts","lineNumber":227,"sourceCode":"\t\tprocess.stdout.write(`${JSON.stringify({ token, path: getTokenFilePath() })}\\n`);\n\t} else {\n\t\tprocess.stdout.write(`${token}\\n`);\n\t}\n}\n\nasync function runLogin(flags: AuthBrokerCommandArgs[\"flags\"]): Promise<void> {\n\tconst providers = getOAuthProviders();\n\tlet providerArg = flags.provider;\n\tif (!providerArg) {\n\t\tif (flags.via) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Usage: omp auth-broker login <provider> --via=user@host (provider required for remote login)\",\n\t\t\t);\n\t\t}\n\t\tproviderArg = await pickProviderInteractively(providers);\n\t}\n\tif (!providers.some(p => p.id === providerArg)) {\n\t\tthrow new Error(\n\t\t\t`Unknown OAuth provider '${providerArg}'. Known: ${providers\n\t\t\t\t.map(p => p.id)\n\t\t\t\t.sort()\n\t\t\t\t.join(\", \")}`,\n\t\t);\n\t}\n\tif (flags.via) {\n\t\tawait runRemoteLogin(providerArg, flags.via, flags.dryRun ?? false);\n\t\treturn;\n\t}\n\tawait runLocalLogin(providerArg as OAuthProvider);\n}\n\nasync function runLocalLogin(provider: OAuthProvider): Promise<void> {\n\t// Drive the per-provider OAuth dance in-process. Persists into the same\n\t// SQLite store the broker uses.\n\tconst rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n\tconst ask = (msg: string) => promptLine(rl, `${msg} `);","sourceCodeStart":209,"sourceCodeEnd":245,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/cli/auth-broker-cli.ts#L209-L245","documentation":"runLogin validates the provider argument against the registered OAuth providers (getOAuthProviders()). An unknown id throws this Error listing all known provider ids, sorted, so the caller can pick a valid one.","triggerScenarios":"Running `omp auth-broker login <provider>` (or with --via) where <provider> is misspelled, uses the wrong casing, or refers to a provider not compiled into this build/version.","commonSituations":"Typos (anthopic instead of anthropic), docs for a newer/older omp version with a different provider roster, or copying a provider id from another tool.","solutions":["Use one of the ids listed after 'Known:' in the error message.","Check spelling/casing — ids are matched exactly.","Upgrade or downgrade omp if the target provider was added in a different version.","Ensure any custom provider plugin/extension that registers the OAuth provider is loaded."],"exampleFix":"// before\nomp auth-broker login claude\n// after\nomp auth-broker login anthropic","handlingStrategy":"validation","validationCode":"import { getOAuthProviders } from \"./auth-broker-cli-providers\"; // or discover via omp auth-broker list\nconst ids = getOAuthProviders().map(p => p.id);\nif (!ids.includes(provider)) {\n  throw new Error(`Unknown provider '${provider}'. Known: ${[...ids].sort().join(\", \")}`);\n}","typeGuard":"function isKnownProvider(id: string, providers: { id: string }[]): boolean {\n  return providers.some(p => p.id === id);\n}","tryCatchPattern":"try {\n  await runAuthBrokerCommand(args);\n} catch (err) {\n  if (err instanceof Error && err.message.startsWith(\"Unknown OAuth provider\")) {\n    console.error(err.message); // message lists all valid ids\n    process.exitCode = 2;\n    return;\n  }\n  throw err;\n}","preventionTips":["Copy provider ids exactly from the 'Known:' list or the docs for your installed version.","Check `omp --version` when following tutorials from a different release.","Keep provider ids in a shared constant in scripts instead of inlining strings."],"tags":["cli","oauth","validation","naming"],"backgroundTag":"unknown-identifier","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}