This adds a debugging tool for analyzing why certain commands fail to execute under the sandbox. Example output: ``` $ codex debug seatbelt --log-denials bash -lc "(echo foo > ~/foo.txt)" bash: /Users/nornagon/foo.txt: Operation not permitted === Sandbox denials === (bash) file-write-data /dev/tty (bash) file-write-data /dev/ttys001 (bash) sysctl-read kern.ngroups (bash) file-write-create /Users/nornagon/foo.txt ``` It operates by: 1. spawning `log stream` to watch system logs, and 2. tracking all descendant PIDs using kqueue + proc_listchildpids. this is a "best-effort" technique, as `log stream` may drop logs(?), and kqueue + proc_listchildpids isn't atomic and can end up missing very short-lived processes. But it works well enough in my testing to be useful :)
62 lines
1.7 KiB
TOML
62 lines
1.7 KiB
TOML
[package]
|
|
edition = "2024"
|
|
name = "codex-cli"
|
|
version = { workspace = true }
|
|
|
|
[[bin]]
|
|
name = "codex"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name = "codex_cli"
|
|
path = "src/lib.rs"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
anyhow = { workspace = true }
|
|
clap = { workspace = true, features = ["derive"] }
|
|
clap_complete = { workspace = true }
|
|
codex-app-server = { workspace = true }
|
|
codex-app-server-protocol = { workspace = true }
|
|
codex-arg0 = { workspace = true }
|
|
codex-chatgpt = { workspace = true }
|
|
codex-cloud-tasks = { path = "../cloud-tasks" }
|
|
codex-common = { workspace = true, features = ["cli"] }
|
|
codex-core = { workspace = true }
|
|
codex-exec = { workspace = true }
|
|
codex-login = { workspace = true }
|
|
codex-mcp-server = { workspace = true }
|
|
codex-process-hardening = { workspace = true }
|
|
codex-protocol = { workspace = true }
|
|
codex-responses-api-proxy = { workspace = true }
|
|
codex-rmcp-client = { workspace = true }
|
|
codex-stdio-to-uds = { workspace = true }
|
|
codex-tui = { workspace = true }
|
|
ctor = { workspace = true }
|
|
libc = { workspace = true }
|
|
owo-colors = { workspace = true }
|
|
regex-lite = { workspace = true}
|
|
serde_json = { workspace = true }
|
|
supports-color = { workspace = true }
|
|
toml = { workspace = true }
|
|
tokio = { workspace = true, features = [
|
|
"io-std",
|
|
"macros",
|
|
"process",
|
|
"rt-multi-thread",
|
|
"signal",
|
|
] }
|
|
tracing = { workspace = true }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
codex_windows_sandbox = { package = "codex-windows-sandbox", path = "../windows-sandbox-rs" }
|
|
|
|
[dev-dependencies]
|
|
assert_cmd = { workspace = true }
|
|
assert_matches = { workspace = true }
|
|
predicates = { workspace = true }
|
|
pretty_assertions = { workspace = true }
|
|
tempfile = { workspace = true }
|