{"record":{"id":"0b58b09c4f5b4136","repo":"can1357/oh-my-pi","slug":"usage-omp-auth-broker-login-provider-via-user","errorCode":null,"errorMessage":"Usage: omp auth-broker login <provider> --via=user@host (provider required for remote login)","messagePattern":"Usage: omp auth-broker login <provider> --via=user@host \\(provider required for remote login\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/coding-agent/src/cli/auth-broker-cli.ts","lineNumber":220,"sourceCode":"\t\t} else {\n\t\t\tprocess.stdout.write(`${next}\\n`);\n\t\t}\n\t\treturn;\n\t}\n\tconst token = await ensureToken();\n\tif (flags.json) {\n\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);","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/cli/auth-broker-cli.ts#L202-L238","documentation":"`omp auth-broker login` requires a provider argument when --via (remote host) is given, because the remote broker must know which OAuth provider to use. Omitting the provider while supplying --via throws this usage Error before any network call.","triggerScenarios":"Running `omp auth-broker login --via=user@host` with no <provider> positional. Local (non-remote) logins without --via are fine — they fall back to an interactive provider picker.","commonSituations":"Following remote-login docs but forgetting the positional argument, or scripting the command from a template where the provider placeholder was empty.","solutions":["Add the provider positional: omp auth-broker login <provider> --via=user@host (e.g. anthropic, openai).","If a local login was intended, drop --via and let the interactive picker choose the provider.","List known providers by checking the error output of an invalid provider or the docs."],"exampleFix":"// before\nomp auth-broker login --via=me@server\n// after\nomp auth-broker login anthropic --via=me@server","handlingStrategy":"validation","validationCode":"if (flags.via && !flags._.length) {\n  throw new Error(\"provider positional required with --via: omp auth-broker login <provider> --via=user@host\");\n}","typeGuard":"null","tryCatchPattern":"try {\n  await runAuthBrokerCommand(args);\n} catch (err) {\n  if (err instanceof Error && err.message.startsWith(\"Usage: omp auth-broker login\")) {\n    console.error(\"Supply a provider before --via, or drop --via for interactive local login.\");\n    process.exitCode = 2;\n    return;\n  }\n  throw err;\n}","preventionTips":["Always put the provider positional first in remote-login scripts.","For interactive use, omit --via so the picker runs.","Template remote-login commands with a required ${PROVIDER:?} placeholder."],"tags":["cli","oauth","usage-error","argument-parsing"],"backgroundTag":"missing-required-argument","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}