diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index dfa8b865..7a3ca22c 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -929,6 +929,7 @@ dependencies = [ "serde", "serde_json", "shlex", + "supports-color", "tempfile", "tokio", "tracing", diff --git a/codex-rs/exec/Cargo.toml b/codex-rs/exec/Cargo.toml index a5a54750..78f1738a 100644 --- a/codex-rs/exec/Cargo.toml +++ b/codex-rs/exec/Cargo.toml @@ -31,6 +31,7 @@ owo-colors = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } shlex = { workspace = true } +supports-color = { workspace = true } tokio = { workspace = true, features = [ "io-std", "macros", diff --git a/codex-rs/exec/src/lib.rs b/codex-rs/exec/src/lib.rs index 6888baff..488e0fcf 100644 --- a/codex-rs/exec/src/lib.rs +++ b/codex-rs/exec/src/lib.rs @@ -28,6 +28,7 @@ use serde_json::Value; use std::io::IsTerminal; use std::io::Read; use std::path::PathBuf; +use supports_color::Stream; use tracing::debug; use tracing::error; use tracing::info; @@ -113,8 +114,8 @@ pub async fn run_main(cli: Cli, codex_linux_sandbox_exe: Option) -> any cli::Color::Always => (true, true), cli::Color::Never => (false, false), cli::Color::Auto => ( - std::io::stdout().is_terminal(), - std::io::stderr().is_terminal(), + supports_color::on_cached(Stream::Stdout).is_some(), + supports_color::on_cached(Stream::Stderr).is_some(), ), };