From aacd3d8aeb7ec24a9b7546fc229cd655fa0bcc66 Mon Sep 17 00:00:00 2001 From: Bradley Axen Date: Thu, 15 Jan 2026 20:29:14 -0800 Subject: [PATCH] skippable session titles --- crates/goose/src/config/base.rs | 4 ++++ crates/goose/src/session/session_manager.rs | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/goose/src/config/base.rs b/crates/goose/src/config/base.rs index f35fbef1d4..7a661a7e01 100644 --- a/crates/goose/src/config/base.rs +++ b/crates/goose/src/config/base.rs @@ -929,6 +929,10 @@ config_value!(GOOSE_PROVIDER, String); config_value!(GOOSE_MODEL, String); config_value!(GOOSE_MAX_ACTIVE_AGENTS, usize); +/// Config key to enable/disable automatic session name generation. +/// Set to "false" to disable. Defaults to true if not set. +pub const GOOSE_SESSION_NAME_GENERATION: &str = "GOOSE_SESSION_NAME_GENERATION"; + /// Load init-config.yaml from workspace root if it exists. /// This function is shared between the config recovery and the init_config endpoint. pub fn load_init_config_from_workspace() -> Result { diff --git a/crates/goose/src/session/session_manager.rs b/crates/goose/src/session/session_manager.rs index ce5bf1d9b5..696a6e3d8a 100644 --- a/crates/goose/src/session/session_manager.rs +++ b/crates/goose/src/session/session_manager.rs @@ -1,4 +1,6 @@ +use crate::config::base::GOOSE_SESSION_NAME_GENERATION; use crate::config::paths::Paths; +use crate::config::Config; use crate::conversation::message::Message; use crate::conversation::Conversation; use crate::model::ModelConfig; @@ -329,7 +331,14 @@ impl SessionManager { pub async fn maybe_update_name(&self, id: &str, provider: Arc) -> Result<()> { let session = self.get_session(id, true).await?; - if session.user_set_name { + // Skip if disabled via config, user set name, or subagent session + let name_generation_enabled = Config::global() + .get_param::(GOOSE_SESSION_NAME_GENERATION) + .unwrap_or(true); + if !name_generation_enabled + || session.user_set_name + || session.session_type == SessionType::SubAgent + { return Ok(()); }