Gemini CLI requires you to authenticate with Google’s AI services. On initial startup you’ll need to configure one of the following authentication methods:
You can temporarily set the environment variable in your current shell session using the following command:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
~/.bashrc
, ~/.zshrc
, or ~/.profile
). For example, the following command adds the environment variable to a ~/.bashrc
file:echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc
source ~/.bashrc
GEMINI_API_KEY
environment variable. In the following methods, replace YOUR_GEMINI_API_KEY
with the API key you obtained from Google AI Studio:
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
For repeated use, you can add the environment variable to your .env file.
Alternatively you can export the API key from your shell’s configuration file (like ~/.bashrc
, ~/.zshrc
, or ~/.profile
). For example, the following command adds the environment variable to a ~/.bashrc
file:
echo 'export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"' >> ~/.bashrc
source ~/.bashrc
:warning: Be advised that when you export your API key inside your shell configuration file, any other process executed from the shell can read it.
GOOGLE_API_KEY
environment variable. In the following methods, replace YOUR_GOOGLE_API_KEY
with your Vertex AI API key:
export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
For repeated use, you can add the environment variable to your .env file or your shell’s configuration file (like ~/.bashrc
, ~/.zshrc
, or ~/.profile
). For example, the following command adds the environment variable to a ~/.bashrc
file:
echo 'export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"' >> ~/.bashrc
source ~/.bashrc
:warning: Be advised that when you export your API key inside your shell configuration file, any other process executed from the shell can read it.
Note: If you encounter an error like
"API keys are not supported by this API - Expected OAuth2 access token or other authentication credentials that assert a principal"
, it is likely that your organization has restricted the creation of service account API keys. In this case, please try the service account JSON key method described below.
Application Default Credentials (ADC):
Note: If you have previously set the
GOOGLE_API_KEY
orGEMINI_API_KEY
environment variables, you must unset them to use Application Default Credentials.unset GOOGLE_API_KEY GEMINI_API_KEY
- Using
gcloud
(for local development):
- Ensure you have a Google Cloud project and have enabled the Vertex AI API.
- Log in with your user credentials:
gcloud auth application-default login
For more information, see Set up Application Default Credentials for Google Cloud.
- Using a Service Account (for applications or when service account API keys are restricted):
- If you are unable to create an API key due to organization policies, or if you are running in a non-interactive environment, you can authenticate using a service account key.
- Create a service account and key, and download the JSON key file. The service account will need to be assigned the “Vertex AI User” role.
- Set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable to the absolute path of the JSON file.
- You can temporarily set the environment variable in your current shell session:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/keyfile.json"
- For repeated use, you can add the command to your shell’s configuration file (e.g.,
~/.bashrc
).echo 'export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/keyfile.json"' >> ~/.bashrc source ~/.bashrc
:warning: Be advised that when you export service account credentials inside your shell configuration file, any other process executed from the shell can read it.
gcloud
or a service account), you must also set the GOOGLE_CLOUD_PROJECT
and GOOGLE_CLOUD_LOCATION
environment variables. In the following methods, replace YOUR_PROJECT_ID
and YOUR_PROJECT_LOCATION
with the relevant values for your project:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION" # e.g., us-central1
~/.bashrc
, ~/.zshrc
, or ~/.profile
). For example, the following commands add the environment variables to a ~/.bashrc
file:
echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc
echo 'export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"' >> ~/.bashrc
source ~/.bashrc
This is the default authentication method when running in Cloud Shell and no other method is configured.
:warning: Be advised that when you export your API key inside your shell configuration file, any other process executed from the shell can read it.
.env
FilesYou can create a .gemini/.env
file in your project directory or in your home directory. Creating a plain .env
file also works, but .gemini/.env
is recommended to keep Gemini variables isolated from other tools.
Important: Some environment variables (like DEBUG
and DEBUG_MODE
) are automatically excluded from project .env
files to prevent interference with gemini-cli behavior. Use .gemini/.env
files for gemini-cli specific variables.
Gemini CLI automatically loads environment variables from the first .env
file it finds, using the following search order:
/
, for each directory it checks:
.gemini/.env
.env
~/.gemini/.env
~/.env
Important: The search stops at the first file encountered—variables are not merged across multiple files.
Project-specific overrides (take precedence when you are inside the project):
mkdir -p .gemini
echo 'GOOGLE_CLOUD_PROJECT="your-project-id"' >> .gemini/.env
User-wide settings (available in every directory):
mkdir -p ~/.gemini
cat >> ~/.gemini/.env <<'EOF'
GOOGLE_CLOUD_PROJECT="your-project-id"
GEMINI_API_KEY="your-gemini-api-key"
EOF
When running the Gemini CLI in a non-interactive environment, you cannot use the interactive login flow. Instead, you must configure authentication using environment variables.
The CLI will automatically detect if it is running in a non-interactive terminal and will use one of the following authentication methods if available:
GEMINI_API_KEY
environment variable.GOOGLE_GENAI_USE_VERTEXAI=true
environment variable.GOOGLE_API_KEY
environment variable.gcloud auth application-default login
in your environment to configure ADC.GOOGLE_CLOUD_PROJECT
and GOOGLE_CLOUD_LOCATION
environment variables are set.If none of these environment variables are set in a non-interactive session, the CLI will exit with an error.
For comprehensive guidance on using Gemini CLI programmatically and in automation workflows, see the Headless Mode Guide.