## Precedence / Override Order
Here is how Gemini CLI decides which config takes effect when there are conflicts. Highest precedence > lower precedence.
``1. Command-line arguments 2. Environment variables (or `.env`) 3. Project settings file (`.gemini/settings.json`) 4. User settings file (`~/.gemini/settings.json`) 5. System settings override file (`/etc/gemini-cli/settings.json` etc.) 6. System defaults file (`/etc/gemini-cli/system-defaults.json`, or platform equivalent) 7. Built-in defaults (hardcoded values in the app)``
Notes:
- Some docs list two system settings files (βdefaultsβ and βoverrideβ). The βoverrideβ one has higher precedence than user & project settings. [Google Gemini](https://google-gemini.github.io/gemini-cli/docs/cli/configuration.html?utm_source=chatgpt.com)
- Environment variables and CLI arguments always override any setting from files. [Medium+1](https://medium.com/google-cloud/gemini-cli-tutorial-series-part-3-configuration-settings-via-settings-json-and-env-files-669c6ab6fd44?utm_source=chatgpt.com)
- `GEMINI.md` context files are loaded in a hierarchical manner: global then project then possibly subdirectory. Itβs less about βoverrideβ of specific keys and more about how contexts are combined. [Philschmid+1](https://www.philschmid.de/gemini-cli-cheatsheet?utm_source=chatgpt.com)
```
Built-in defaults (hardcoded in binary)
β
βββ System defaults file
β βββ /etc/gemini-cli/system-defaults.json
β
βββ System settings override file
β βββ /etc/gemini-cli/settings.json
β
βββ User settings
β βββ ~/.gemini/settings.json
β
βββ Project settings
β βββ .gemini/settings.json
β
βββ Environment variables / .env files
β βββ GEMINI_API_KEY=...
β
βββ Command-line arguments
βββ gemini --model=... --temperature=...
```
**Special files (not strict overrides, but loaded if present):**
```
~/.gemini/GEMINI.md
./GEMINI.md (project-level context)
```