|
Download docs/cli/session-management.md from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 6.35 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/docs/cli/session-management.md
- Command line
-
hf download hf://SaylorTwift/gemini-cli/docs/cli/session-management.md
-
curl -L -o session-management.md https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/docs/cli/session-management.md
6.35 kB
| # Session management | |
| Session management saves your conversation history so you can resume your work | |
| where you left off. Use these features to review past interactions, manage | |
| history across different projects, and configure how long data is retained. | |
| ## Automatic saving | |
| Your session history is recorded automatically as you interact with the model. | |
| This background process ensures your work is preserved even if you interrupt a | |
| session. | |
| - **What is saved:** The complete conversation history, including: | |
| - Your prompts and the model's responses. | |
| - All tool executions (inputs and outputs). | |
| - Token usage statistics (input, output, cached, etc.). | |
| - Assistant thoughts and reasoning summaries (when available). | |
| - **Location:** Sessions are stored in `~/.gemini/tmp/<project_hash>/chats/`, | |
| where `<project_hash>` is a unique identifier based on your project's root | |
| directory. | |
| - **Scope:** Sessions are project-specific. Switching directories to a different | |
| project switches to that project's session history. | |
| ## Resuming sessions | |
| You can resume a previous session to continue the conversation with all prior | |
| context restored. Resuming is supported both through command-line flags and an | |
| interactive browser. | |
| ### From the command line | |
| When starting Gemini CLI, use the `--resume` (or `-r`) flag to load existing | |
| sessions. | |
| - **Resume latest:** | |
| ```bash | |
| gemini --resume | |
| ``` | |
| This immediately loads the most recent session. | |
| - **Resume by index:** List available sessions first (see | |
| [Listing sessions](#listing-sessions)), then use the index number: | |
| ```bash | |
| gemini --resume 1 | |
| ``` | |
| - **Resume by ID:** You can also provide the full session UUID: | |
| ```bash | |
| gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890 | |
| ``` | |
| ### From the interactive interface | |
| While the CLI is running, use the `/resume` slash command to open the **Session | |
| Browser**: | |
| ```text | |
| /resume | |
| ``` | |
| When typing `/resume` (or `/chat`) in slash completion, commands are grouped | |
| under titled separators: | |
| - `-- auto --` (session browser) | |
| - `list` is selectable and opens the session browser | |
| - `-- checkpoints --` (manual tagged checkpoint commands) | |
| Unique prefixes such as `/resum` and `/cha` resolve to the same grouped menu. | |
| The Session Browser provides an interactive interface where you can perform the | |
| following actions: | |
| - **Browse:** Scroll through a list of your past sessions. | |
| - **Preview:** See details like the session date, message count, and the first | |
| user prompt. | |
| - **Search:** Press `/` to enter search mode, then type to filter sessions by ID | |
| or content. | |
| - **Select:** Press **Enter** to resume the selected session. | |
| - **Esc:** Press **Esc** to exit the Session Browser. | |
| ### Manual chat checkpoints | |
| For named branch points inside a session, use chat checkpoints: | |
| ```text | |
| /resume save decision-point | |
| /resume list | |
| /resume resume decision-point | |
| ``` | |
| Compatibility aliases: | |
| - `/chat ...` works for the same commands. | |
| - `/resume checkpoints ...` also remains supported during migration. | |
| ## Parallel sessions with Git worktrees | |
| When working on multiple tasks at once, you can use | |
| [Git worktrees](./git-worktrees.md) to give each Gemini session its own copy of | |
| the codebase. This prevents changes in one session from colliding with another. | |
| ## Managing sessions | |
| You can list and delete sessions to keep your history organized and manage disk | |
| space. | |
| ### Listing sessions | |
| To see a list of all available sessions for the current project from the command | |
| line, use the `--list-sessions` flag: | |
| ```bash | |
| gemini --list-sessions | |
| ``` | |
| Output example: | |
| ```text | |
| Available sessions for this project (3): | |
| 1. Fix bug in auth (2 days ago) [a1b2c3d4] | |
| 2. Refactor database schema (5 hours ago) [e5f67890] | |
| 3. Update documentation (Just now) [abcd1234] | |
| ``` | |
| ### Deleting sessions | |
| You can remove old or unwanted sessions to free up space or declutter your | |
| history. | |
| **From the command line:** Use the `--delete-session` flag with an index or ID: | |
| ```bash | |
| gemini --delete-session 2 | |
| ``` | |
| **From the Session Browser:** | |
| 1. Open the browser with `/resume`. | |
| 2. Navigate to the session you want to remove. | |
| 3. Press **x**. | |
| ## Configuration | |
| You can configure how Gemini CLI manages your session history in your | |
| `settings.json` file. These settings let you control retention policies and | |
| session lengths. | |
| ### Session retention | |
| By default, Gemini CLI automatically cleans up old session data to prevent your | |
| history from growing indefinitely. When a session is deleted, Gemini CLI also | |
| removes all associated data, including implementation plans, task trackers, tool | |
| outputs, and activity logs. | |
| The default policy is to **retain sessions for 30 days**. | |
| #### Configuration | |
| You can customize these policies using the `/settings` command or by manually | |
| editing your `settings.json` file: | |
| ```json | |
| { | |
| "general": { | |
| "sessionRetention": { | |
| "enabled": true, | |
| "maxAge": "30d", | |
| "maxCount": 50 | |
| } | |
| } | |
| } | |
| ``` | |
| - **`enabled`**: (boolean) Master switch for session cleanup. Defaults to | |
| `true`. | |
| - **`maxAge`**: (string) Duration to keep sessions (for example, "24h", "7d", | |
| "4w"). Sessions older than this are deleted. Defaults to `"30d"`. | |
| - **`maxCount`**: (number) Maximum number of sessions to retain. The oldest | |
| sessions exceeding this count are deleted. Defaults to undefined (unlimited). | |
| - **`minRetention`**: (string) Minimum retention period (safety limit). Defaults | |
| to `"1d"`. Sessions newer than this period are never deleted by automatic | |
| cleanup. | |
| ### Session limits | |
| You can limit the length of individual sessions to prevent context windows from | |
| becoming too large and expensive. | |
| ```json | |
| { | |
| "model": { | |
| "maxSessionTurns": 100 | |
| } | |
| } | |
| ``` | |
| - **`maxSessionTurns`**: (number) The maximum number of turns (user and model | |
| exchanges) allowed in a single session. Set to `-1` for unlimited (default). | |
| **Behavior when limit is reached:** | |
| - **Interactive mode:** The CLI shows an informational message and stops | |
| sending requests to the model. You must manually start a new session. | |
| - **Non-interactive mode:** The CLI exits with an error. | |
| ## Next steps | |
| - Explore the [Memory tool](../tools/memory.md) to save persistent information | |
| across sessions. | |
| - Learn how to [Checkpoint](./checkpointing.md) your session state. | |
| - Check out the [CLI reference](./cli-reference.md) for all command-line flags. | |