Authentication
Qwen Code supports two authentication methods. Pick the one that matches how you want to run the CLI:
- Qwen OAuth (recommended): sign in with your
qwen.aiaccount in a browser. - OpenAI-compatible API: use an API key (OpenAI or any OpenAI-compatible provider / endpoint).
Option 1: Qwen OAuth (recommended & free) 👍
Use this if you want the simplest setup and you’re using Qwen models.
- How it works: on first start, Qwen Code opens a browser login page. After you finish, credentials are cached locally so you usually won’t need to log in again.
- Requirements: a
qwen.aiaccount + internet access (at least for the first login). - Benefits: no API key management, automatic credential refresh.
- Cost & quota: free, with a quota of 60 requests/minute and 2,000 requests/day.
Start the CLI and follow the browser flow:
qwenOption 2: OpenAI-compatible API (API key)
Use this if you want to use OpenAI models or any provider that exposes an OpenAI-compatible API (e.g. OpenAI, Azure OpenAI, OpenRouter, ModelScope, Alibaba Cloud Bailian, or a self-hosted compatible endpoint).
Quick start (interactive, recommended for local use)
When you choose the OpenAI-compatible option in the CLI, it will prompt you for:
- API key
- Base URL (default:
https://api.openai.com/v1) - Model (default:
gpt-4o)
Note: the CLI may display the key in plain text for verification. Make sure your terminal is not being recorded or shared.
Configure via command-line arguments
# API key only
qwen-code --openai-api-key "your-api-key-here"
# Custom base URL (OpenAI-compatible endpoint)
qwen-code --openai-api-key "your-api-key-here" --openai-base-url "https://your-endpoint.com/v1"
# Custom model
qwen-code --openai-api-key "your-api-key-here" --model "gpt-4o-mini"Configure via environment variables
You can set these in your shell profile, CI, or an .env file:
export OPENAI_API_KEY="your-api-key-here"
export OPENAI_BASE_URL="https://api.openai.com/v1" # optional
export OPENAI_MODEL="gpt-4o" # optionalPersisting env vars with .env / .qwen/.env
Qwen Code will auto-load environment variables from the first .env file it finds (variables are not merged across multiple files).
Search order:
- From the current directory, walking upward toward
/:.qwen/.env.env
- If nothing is found, it falls back to your home directory:
~/.qwen/.env~/.env
.qwen/.env is recommended to keep Qwen Code variables isolated from other tools. Some variables (like DEBUG and DEBUG_MODE) are excluded from project .env files to avoid interfering with qwen-code behavior.
Examples:
# Project-specific settings (recommended)
mkdir -p .qwen
cat >> .qwen/.env <<'EOF'
OPENAI_API_KEY="your-api-key"
OPENAI_BASE_URL="https://api-inference.modelscope.cn/v1"
OPENAI_MODEL="Qwen/Qwen3-Coder-480B-A35B-Instruct"
EOF# User-wide settings (available everywhere)
mkdir -p ~/.qwen
cat >> ~/.qwen/.env <<'EOF'
OPENAI_API_KEY="your-api-key"
OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENAI_MODEL="qwen3-coder-plus"
EOFSwitch authentication method (without restarting)
In the Qwen Code UI, run:
/authNon-interactive / headless environments (CI, SSH, containers)
In a non-interactive terminal you typically cannot complete the OAuth browser login flow. Use the OpenAI-compatible API method via environment variables:
- Set at least
OPENAI_API_KEY. - Optionally set
OPENAI_BASE_URLandOPENAI_MODEL.
If none of these are set in a non-interactive session, Qwen Code will exit with an error.
Security notes
- Don’t commit API keys to version control.
- Prefer
.qwen/.envfor project-local secrets (and keep it out of git). - Treat your terminal output as sensitive if it prints credentials for verification.