docs/cli/session-management.md
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.
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.
~/.gemini/tmp/<project_hash>/chats/,
where <project_hash> is a unique identifier based on your project's root
directory.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.
When starting Gemini CLI, use the --resume (or -r) flag to load existing
sessions.
Resume latest:
gemini --resume
This immediately loads the most recent session.
Resume by index: List available sessions first (see Listing sessions), then use the index number:
gemini --resume 1
Resume by ID: You can also provide the full session UUID:
gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890
While the CLI is running, use the /resume slash command to open the Session
Browser:
/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:
/ to enter search mode, then type to filter sessions by ID
or content.For named branch points inside a session, use chat checkpoints:
/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.When working on multiple tasks at once, you can use Git worktrees to give each Gemini session its own copy of the codebase. This prevents changes in one session from colliding with another.
You can list and delete sessions to keep your history organized and manage disk space.
To see a list of all available sessions for the current project from the command
line, use the --list-sessions flag:
gemini --list-sessions
Output example:
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]
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:
gemini --delete-session 2
From the Session Browser:
/resume.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.
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.
You can customize these policies using the /settings command or by manually
editing your settings.json file:
{
"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.You can limit the length of individual sessions to prevent context windows from becoming too large and expensive.
{
"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: