From 505225c0bdd5f7cd2e4a13d09455fed8d76e16fd Mon Sep 17 00:00:00 2001 From: Connor Justice Date: Wed, 14 Jan 2026 15:33:22 -0500 Subject: [PATCH] fix: prevent panic when tracing subscriber already initialized Use try_init() instead of init() for tracing subscriber setup to gracefully handle cases where a global subscriber is already set. This fixes a panic in the scout agent subprocess when spawned by the research tool, where a dependency may have already initialized tracing. Co-Authored-By: Claude Opus 4.5 --- crates/g3-cli/src/agent_mode.rs | 6 +++--- crates/g3-cli/src/utils.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/g3-cli/src/agent_mode.rs b/crates/g3-cli/src/agent_mode.rs index b35edc5..4bdbd45 100644 --- a/crates/g3-cli/src/agent_mode.rs +++ b/crates/g3-cli/src/agent_mode.rs @@ -26,17 +26,17 @@ pub async fn run_agent_mode( use g3_core::find_incomplete_agent_session; use g3_core::get_agent_system_prompt; - // Initialize logging + // Initialize logging (use try_init to avoid panic if subscriber already set by a dependency) use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter}; let filter = EnvFilter::from_default_env() .add_directive("g3_core=info".parse().unwrap()) .add_directive("g3_cli=info".parse().unwrap()) .add_directive("llama_cpp=off".parse().unwrap()) .add_directive("llama=off".parse().unwrap()); - tracing_subscriber::registry() + let _ = tracing_subscriber::registry() .with(tracing_subscriber::fmt::layer()) .with(filter) - .init(); + .try_init(); let output = SimpleOutput::new(); diff --git a/crates/g3-cli/src/utils.rs b/crates/g3-cli/src/utils.rs index 6f53c34..cff3fa7 100644 --- a/crates/g3-cli/src/utils.rs +++ b/crates/g3-cli/src/utils.rs @@ -169,8 +169,8 @@ pub fn initialize_logging(verbose: bool) { .add_directive("llama=off".parse().unwrap()) }; - tracing_subscriber::registry() + let _ = tracing_subscriber::registry() .with(tracing_subscriber::fmt::layer()) .with(filter) - .init(); + .try_init(); }