From 18aaa75ae7173cf521a0a823528c32fa2a4e7fda Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Sun, 8 Mar 2026 12:01:05 -0400 Subject: [PATCH] Support verbose = true in cli.toml to default verbose output on Adds a top-level `verbose` bool to CliConfig so `arc run start` and `arc doctor` pick it up without requiring `-v` every invocation. Co-Authored-By: Claude Opus 4.6 --- crates/arc-cli/src/cli_config.rs | 8 ++++++++ crates/arc-cli/src/main.rs | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/arc-cli/src/cli_config.rs b/crates/arc-cli/src/cli_config.rs index 84fce8d5e..4123b24f8 100644 --- a/crates/arc-cli/src/cli_config.rs +++ b/crates/arc-cli/src/cli_config.rs @@ -52,6 +52,8 @@ pub struct CliConfig { pub llm: Option, pub git: Option, #[serde(default)] + pub verbose: bool, + #[serde(default)] pub log: arc_api::server_config::LogConfig, } @@ -350,6 +352,12 @@ email = "me@local" assert_eq!(config.git, None); } + #[test] + fn parse_verbose_true() { + let config: CliConfig = toml::from_str("verbose = true").unwrap(); + assert!(config.verbose); + } + #[test] fn parse_log_level() { let toml = "[log]\nlevel = \"debug\""; diff --git a/crates/arc-cli/src/main.rs b/crates/arc-cli/src/main.rs index 7ef1d0660..818c9d188 100644 --- a/crates/arc-cli/src/main.rs +++ b/crates/arc-cli/src/main.rs @@ -217,11 +217,12 @@ async fn main() -> Result<()> { arc_agent::cli::run_with_args(args).await? } Command::Run { command } => match command { - RunCommand::Start(args) => { + RunCommand::Start(mut args) => { let styles: &'static arc_util::terminal::Styles = Box::leak(Box::new(arc_util::terminal::Styles::detect_stderr())); let server_config = arc_api::server_config::load_server_config(None)?; let cli_config = cli_config::load_cli_config(None)?; + args.verbose = args.verbose || cli_config.verbose; let github_app = build_github_app_credentials(&server_config); let cli_author = cli_config.git.as_ref().map(|g| &g.author); @@ -279,6 +280,8 @@ async fn main() -> Result<()> { arc_api::serve::serve_command(args, styles).await?; } Command::Doctor { verbose, live } => { + let cli_config = cli_config::load_cli_config(None)?; + let verbose = verbose || cli_config.verbose; let exit_code = doctor::run_doctor(verbose, live).await; std::process::exit(exit_code); }