| title | Troubleshooting |
|---|
Common issues and their fixes when running Agora CLI. For broader install
guidance see Install. For programmatic error inspection,
prefer agora project doctor --json and agora auth status --json.
Before opening an issue, capture these:
agora --version
agora project doctor --json
agora auth status --jsonThe output above is what the bug report template asks for and is the fastest path to a fix.
Symptom: the OAuth browser window does not open, or you are running over SSH / in a container.
agora login --no-browserThis prints the login URL so you can open it on another machine and paste the callback. You can also disable auto-open globally:
agora config update --browser-auto-open=falseThe installer printed the install directory but it is not on PATH.
# macOS / Linux
echo "$PATH"
sh install.sh # re-run installer (PATH wiring is auto-on by default)
# Windows PowerShell
$env:Path -split ';'
.\install.ps1 # re-run installer (PATH wiring is auto-on by default)The installer detects when another agora shadows the freshly installed
binary and warns. You can also check directly:
which -a agora # macOS / Linux
where.exe agora # Windows PowerShellReorder PATH so the installer's directory comes first, or remove the
older binary.
If the older binary came from a global npm install and you want to switch to the standalone installer, either migrate in one installer run:
curl -fsSL https://raw.githubusercontent.com/AgoraIO/cli/main/install.sh | sh -s -- --replace-npmOr uninstall npm first and then run the standalone installer:
npm uninstall -g agoraio-cli
curl -fsSL https://raw.githubusercontent.com/AgoraIO/cli/main/install.sh | shUse --force only when you intentionally want two installs and understand
that the first agora on PATH wins.
The CLI shells out to git clone for quickstarts. Most failures map to a stable error code:
| Error code | Meaning | Fix |
|---|---|---|
QUICKSTART_GIT_MISSING |
git is not on PATH. |
Install git (git-scm.com/downloads) and retry. |
QUICKSTART_REF_INVALID |
--ref is empty, dash-prefixed, or contains whitespace. |
Pass a valid branch/tag/commit. |
QUICKSTART_REPO_OVERRIDE_INVALID |
The AGORA_QUICKSTART_<TEMPLATE>_REPO_URL env override is malformed. |
Set it to an https://, ssh://, git://, file://, git@host:path, or absolute local path URL — or unset it. |
If the clone reaches git but still fails, verify connectivity:
git --version
git ls-remote https://github.com/AgoraIO-Conversational-AI/agent-quickstart-nextjs.gitCheck proxies and corporate firewall rules if ls-remote hangs or fails.
The CLI invokes git with -c credential.helper= so credential helpers (including macOS keychain) are not consulted for these public clones — agent and CI subprocesses no longer fail with "Device not configured."
Workshops and internal forks can override the clone URL per template, e.g.:
AGORA_QUICKSTART_NEXTJS_REPO_URL=https://github.com/my-org/fork agora init demo --template nextjsA clone:override progress event is emitted whenever this is in use, so JSON automation runs show which fork was cloned.
quickstart env write, init, and project env --with-secrets need a
project with an App Certificate. Either pick another project or enable
the certificate in Agora Console.
agora project list --json
agora project use <project-name>
agora project doctor --jsonThis is intentional. --yes accepts the default for confirmation
prompts; it does not start a brand-new interactive OAuth flow in JSON,
CI, or non-TTY contexts. Authenticate once on the host first:
agora loginThen re-run your automation. CI runners should authenticate as part of their bootstrap, not as part of every command.
CI auto-detection is intentional: in CI, the CLI never spawns an OAuth
browser flow even with --yes. Pre-authenticate the runner:
agora loginOr set AGORA_HOME=$(mktemp -d) per job for an isolated session and
provision credentials via your secret store before invoking the CLI.
agora upgrade performs an in-place update for installer-managed installs.
In CI and agent automation, prefer non-mutating checks:
agora upgrade --check --json
agora --upgrade-check --jsonInstaller-managed self-update is blocked in CI by default (v0.2.1+). Blocked
runs return status: "manual" with ciBlocked: true in JSON. Set
AGORA_ALLOW_UPGRADE_IN_CI=1 only when a job intentionally needs to mutate
the installed binary.
For package-manager installs, use the package manager's own upgrade command.
Release archives were renamed from agora-cli-go_v* to agora-cli_v*
starting in v0.2.1. Binaries installed from v0.1.7 through v0.2.0 embed
upgrade logic that only knows the old prefix, so agora upgrade may fail
when downloading v0.2.1+.
Re-run the installer once (it always fetches the latest script and archive names):
curl -fsSL https://raw.githubusercontent.com/AgoraIO/cli/main/install.sh | shnpm and other package-manager installs are unaffected.
In JSON, CI, or non-TTY runs, agora init requires an explicit template.
Pass --template (list options with agora quickstart list):
agora init my-demo --template nextjs --new-project --yes --jsonThe CLI auto-detects CI and disables color and progress bars there. In local TTYs you can override:
agora <command> --no-color
NO_COLOR=1 agora <command>
agora <command> --jsonFor wrappers that parse output, always pass --json. Pretty output is
not a stable contract.
If you mistype a subcommand the CLI prints the closest matches:
$ agora projct doctor
Error: unknown command "projct" for "agora"
Did you mean this?
project
Use --debug (equivalent to AGORA_DEBUG=1) to mirror structured log
records to stderr. JSON envelopes and exit codes are unchanged.
v0.2.0 removed the legacy
--verbose/-valias and theAGORA_VERBOSEenvironment variable. If you still have a 0.1.x config file with averbosekey, it is silently migrated todebugon first load — no action required. Update any scripts that setAGORA_VERBOSE=1to setAGORA_DEBUG=1instead.
agora --debug project list
AGORA_DEBUG=1 agora init my-demo --template nextjs --jsonThe same lines are written to a rotating log file. Print the path with:
agora config path # parent directoryThe log file is agora-cli.log next to the config file.
Telemetry is opt-out. Disable with any of:
agora telemetry disable
agora config update --telemetry-enabled=false
DO_NOT_TRACK=1 agora <command>See Telemetry for the field schema.
Boolean flags in agora config update need explicit =false syntax. For example:
agora config update --telemetry-enabled=false
agora config update --browser-auto-open=false
agora config update --debug=falsePassing only --telemetry-enabled sets the value to true; omitting the flag leaves the existing config unchanged.
- Open a GitHub Discussion for "how do I" questions.
- Open a bug report for a reproducible defect.
- Email security@agora.io for a suspected security vulnerability (see SECURITY.md).