live · scanning repos
Scanrepo
github.com
github.com / openai

openai/codex

Rust·9453 files·commit 40db507·scanned 5d ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 15 — openai is a verified organization — findings likely false positives

verdict accurate?
Verified organization
32% file coverage
Partial architecture graph
CLI tool detected
threat-state: lowlive

FINDINGS ░▒▓

warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign..github/scripts/macos-signing/sign_macos_cli_package.py
                command.extend(["--identifier", f"com.openai.codex.{name}"])
            subprocess.run(command, check=True)
            with (reports / f"{name}-signature.yaml").open("wb") as output:...
+4
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign..github/scripts/macos-signing/test_notarize_with_akv.py
                    artifact.write_bytes(b"signed release artifact")
                    subprocess.run(
                        [
                            str(
+4
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.bazel/rules/testing/wine/src/lib.rs
        install_powershell_runtime(prefix.path(), &runtime.powershell_runtime)?;
        let mut command = StdCommand::new(&runtime.wine);
        configure_wine_environment(&mut command, &runtime, pr...
+8
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.bazel/rules/testing/wine/src/lib_tests.rs
    let executable = codex_utils_cargo_bin::cargo_bin("wine-smoke")?;
    let mut process = WineTestCommand::new(executable).arg("--wait").spawn()?;
    let mut lines = BufReader::new(process.take_std...
+8
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.codex-rs/app-server-daemon/src/backend/pid.rs
                    // A previous updater may have started this child; reap it if it has exited.
                    unsafe { libc::waitpid(raw_pid, std::ptr::null_mut(), libc::WNOHANG) };
           ...
+3
criticalRust process Command usagestd::process::Command can execute arbitrary shell commands. Malware uses it to drop payloads, exfiltrate data, or establish persistence.codex-rs/app-server-daemon/src/backend/pid.rs
async fn read_process_details(pid: u32) -> Result<(String, String)> {
    let output = Command::new("ps")
        .args(["-p", &pid.to_string(), "-o", "stat=", "-o", "lstart="])
        .output()
+8
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.codex-rs/app-server-daemon/src/backend/pid_identity.rs
    // arg=1 includes zombies so callers can reap children that have exited.
    let read = unsafe {
        libc::proc_pidinfo(
            pid,
+3
warningRust unsafe blockunsafe blocks bypass Rust's memory safety guarantees. Malware uses them for raw pointer manipulation, shellcode injection, or calling dangerous foreign functions.codex-rs/app-server-daemon/src/backend/pid_start.rs
        {
            unsafe {
                command.pre_exec(|| {
                    if libc::setsid() == -1 {
+3
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningRust wallet/crypto code with network activityCode handling private keys or signing and also making network requests may be exfiltrating secrets or sending funds to an attacker.codex-rs/app-server-client/src/lib.rs
            .send(())
            .expect("server completion signal should send");
        client.shutdown().await.expect("shutdown should complete");
    }
+5
warningRust wallet/crypto code with network activityCode handling private keys or signing and also making network requests may be exfiltrating secrets or sending funds to an attacker.codex-rs/app-server-transport/src/transport/remote_control/websocket.rs
    #[tokio::test]
    async fn run_server_writer_inner_assigns_contiguous_seq_ids_per_stream() {
        let (client_stream, mut server_stream) = connected_websocket_pair().await;
        let (websoc...
+5
warningRust wallet/crypto code with network activityCode handling private keys or signing and also making network requests may be exfiltrating secrets or sending funds to an attacker.codex-rs/app-server/tests/suite/v2/account_enterprise_tests.rs
    let assertion = format!(
        "{}.{}.signature",
        URL_SAFE_NO_PAD.encode(r#"{"alg":"ES256"}"#),
        URL_SAFE_NO_PAD.encode(
+5
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.codex-rs/app-server-protocol/schema/typescript/ClientRequest.ts+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.codex-rs/app-server-protocol/schema/typescript/ResponseItem.ts+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.codex-rs/app-server-protocol/schema/typescript/ServerNotification.ts+4
infoSuspicious file in repoExecutable file (setup-msvc-env.ps1) in repository.github/actions/setup-msvc-env/setup-msvc-env.ps1+2
infoSuspicious file in repoExecutable file (compute-bazel-windows-path.ps1) in repository.github/scripts/compute-bazel-windows-path.ps1+2
infoSuspicious file in repoExecutable file (setup-dev-drive.ps1) in repository.github/scripts/setup-dev-drive.ps1+2
infoAuthor has no other public repositoriesGitHub user "goodman-oai" has no other public repositories, common for burner accounts used in scams.+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

3000 files scanned @ 40db507 | 10/22/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration25
file system access0
obfuscation15
supply chain15
owasp / injection0
telemetry
files 3000/9453rules hit 19engine v7commit 40db507

github

openai/codex

Lightweight coding agent that runs in your terminal

Rust
130467
20571
563d
9453 files
3000 scanned(32%)
40db507

architecture░▒▓

entry (0) flagged (108) pkg (1047)
1447 nodes · 2849 edgesscroll to zoom · click node to jump to finding