Configuration Files Management
Master configuration file management for Gemini CLI to customize behavior, manage settings, and organize multiple environments.
Configuration File Locations
Gemini CLI looks for configuration files in these locations (in order of priority):
1. Project-specific config
./gemini.config.json
./.gemini/config.json
Highest priority, overrides all other settings
2. User config
# Linux
~/.config/gemini-cli/config.json
# macOS
~/Library/Application Support/gemini-cli/config.json
# Windows
%APPDATA%\gemini-cli\config.json
User-specific settings
3. Global config
# Linux/macOS
/etc/gemini-cli/config.json
# Windows
C:\ProgramData\gemini-cli\config.json
System-wide defaults
Configuration File Structure
Complete configuration example:
{ "apiKey": "AIza...", "model": "gemini-pro", "temperature": 0.7, "maxTokens": 2048, "timeout": 30000, "output": { "format": "markdown", "highlighting": true, "pager": "auto" }, "mcpServers": { "filesystem": { "command": "npx", "args": ["@modelcontextprotocol/server-filesystem", "/home/user/projects"] } }, "aliases": { "explain": "Explain this code: ", "review": "Review this code for issues: ", "test": "Generate unit tests for: " }, "safety": { "blockThreshold": "BLOCK_MEDIUM_AND_ABOVE", "categories": ["HARM_CATEGORY_HARASSMENT"] } }
Configuration Options
Core Settings
Option | Type | Default | Description |
---|---|---|---|
apiKey | string | - | Google AI API key |
model | string | "gemini-pro" | Default model to use |
temperature | number | 0.7 | Response randomness (0.0-1.0) |
maxTokens | number | 2048 | Maximum response length |
timeout | number | 30000 | Request timeout (milliseconds) |
Output Settings
"output": { "format": "markdown", // markdown, plain, json "highlighting": true, // syntax highlighting "pager": "auto", // auto, always, never "streaming": true, // stream responses "quiet": false // suppress non-essential output }
Safety Settings
"safety": { "blockThreshold": "BLOCK_MEDIUM_AND_ABOVE", "categories": [ "HARM_CATEGORY_HARASSMENT", "HARM_CATEGORY_HATE_SPEECH", "HARM_CATEGORY_SEXUALLY_EXPLICIT", "HARM_CATEGORY_DANGEROUS_CONTENT" ] }
Managing Multiple Configurations
Environment-Specific Configs
Development config:
# gemini.dev.json
{ "apiKey": "dev-api-key", "model": "gemini-pro", "temperature": 0.9, "output": { "format": "plain" } }
Production config:
# gemini.prod.json
{ "apiKey": "prod-api-key", "model": "gemini-pro", "temperature": 0.3, "timeout": 60000, "output": { "quiet": true } }
Usage:
gemini --config gemini.dev.json "test prompt"
gemini --config gemini.prod.json "production prompt"
Project-Specific Configs
Create project config:
# In your project directory
mkdir .gemini
cat > .gemini/config.json << 'EOF'
{ "model": "gemini-pro", "aliases": { "docs": "Generate documentation for: ", "fix": "Fix this bug: " }, "mcpServers": { "git": { "command": "npx", "args": ["@modelcontextprotocol/server-git", "."] } } } EOF
Configuration Management Commands
View current configuration:
gemini config show
gemini config show --source # Show where settings come from
Edit configuration:
gemini config edit
gemini config edit --global
Set individual options:
gemini config set model gemini-ultra
gemini config set temperature 0.5
gemini config set output.format markdown
Validate configuration:
gemini config validate
gemini config validate --file gemini.dev.json
Configuration Templates
Minimal Config
{ "apiKey": "your-api-key-here" }
Developer Config
{ "apiKey": "your-api-key", "model": "gemini-pro", "temperature": 0.8, "output": { "format": "markdown", "highlighting": true }, "aliases": { "code": "Help me with this code: ", "debug": "Debug this issue: ", "optimize": "Optimize this code: " } }
Enterprise Config
{ "apiKey": "enterprise-api-key", "model": "gemini-pro", "temperature": 0.3, "timeout": 60000, "safety": { "blockThreshold": "BLOCK_LOW_AND_ABOVE" }, "output": { "quiet": true, "format": "json" }, "logging": { "level": "info", "file": "/var/log/gemini-cli.log" } }
Best Practices
✅ Do
- • Use project-specific configs for different codebases
- • Version control your project configs (but not API keys)
- • Use environment variables for sensitive data
- • Validate configs after changes
- • Document custom aliases and settings
❌ Don't
- • Commit API keys to version control
- • Use overly complex nested configurations
- • Ignore configuration validation errors
- • Set extremely high timeout values
- • Override safety settings unnecessarily
Next Steps
Ready to customize your Gemini CLI configuration: