Overview
Sessions store:- Conversation history (messages)
- Extension states (enabled MCP servers)
- Token usage metrics
- Working directory and metadata
- Recipe configurations
Core Types
Session
Represents a Goose conversation session.crates/goose/src/session/session_manager.rs:70-96
Unique session identifier (format:
YYYYMMDD_N)Directory where session tools execute
Human-readable session name
Whether name was set by user (vs auto-generated)
Type of session (User, Scheduled, SubAgent, Hidden, Terminal, Gateway)
JSON blob storing extension states
Full message history (only loaded with
include_messages=true)Tokens used in the last LLM call
Total tokens used across all LLM calls in this session
SessionType
crates/goose/src/session/session_manager.rs:25-35
SessionManager
Manages session lifecycle and persistence.crates/goose/src/session/session_manager.rs:246-248
Constructor
instance()
Get the global SessionManager singleton.crates/goose/src/session/session_manager.rs:257-261
Example:
new()
Create a SessionManager with custom data directory.Directory for session database
crates/goose/src/session/session_manager.rs:251-255
CRUD Operations
create_session()
Create a new session.Initial working directory for tools
Initial session name
Type of session to create
crates/goose/src/session/session_manager.rs:267-276
Example:
get_session()
Retrieve a session by ID.Session ID to retrieve
Whether to load full conversation history
crates/goose/src/session/session_manager.rs:278-280
Example:
list_sessions()
List all user and scheduled sessions.crates/goose/src/session/session_manager.rs:298-300
list_sessions_by_types()
List sessions filtered by type.Session types to include
crates/goose/src/session/session_manager.rs:302-304
Example:
delete_session()
Delete a session and all its messages.Session ID to delete
crates/goose/src/session/session_manager.rs:306-308
Message Management
add_message()
Append a message to a session.Session ID
Message to append
crates/goose/src/session/session_manager.rs:290-292
Example:
replace_conversation()
Replace entire conversation history (used for compaction).Session ID
New conversation to store
crates/goose/src/session/session_manager.rs:294-296
truncate_conversation()
Delete messages after a timestamp.Session ID
Unix timestamp (seconds) - messages >= this timestamp are deleted
crates/goose/src/session/session_manager.rs:326-330
Update Operations
update()
Get a builder for updating session fields.Session ID to update
crates/goose/src/session/session_manager.rs:282-284
SessionUpdateBuilder
Builder pattern for updating sessions. Source:crates/goose/src/session/session_manager.rs:98-117
user_provided_name()
Set user-provided name.crates/goose/src/session/session_manager.rs:154-161
system_generated_name()
Set auto-generated name.crates/goose/src/session/session_manager.rs:163-170
extension_data()
Update extension state.crates/goose/src/session/session_manager.rs:182-185
apply()
Execute the update.crates/goose/src/session/session_manager.rs:150-152
Example:
Import/Export
export_session()
Export session to JSON.Session ID to export
crates/goose/src/session/session_manager.rs:314-316
import_session()
Import session from JSON.JSON session data
crates/goose/src/session/session_manager.rs:318-320
copy_session()
Duplicate a session.ID of session to copy
Name for the new session
crates/goose/src/session/session_manager.rs:322-324
Analytics
get_insights()
Get aggregated session statistics.crates/goose/src/session/session_manager.rs:310-312
SessionInsights
crates/goose/src/session/session_manager.rs:119-124
Chat History Search
search_chat_history()
Search messages across all sessions.Search query string
Maximum results to return
Only include messages after this date
Only include messages before this date
Session ID to exclude from results
crates/goose/src/session/session_manager.rs:357-368
Related Types
- Agent - Main agent orchestrator
- Conversation - Message history
- Config - Configuration system