Quoting OpenAI:
Our goal is to make the software pieces as efficient as possible and there were a few areas we wanted to improve:
- Zero-dependency Install — currently Node v22+ is required, which is frustrating or a blocker for some users
- Native Security Bindings — surprise! we already ship a Rust for linux sandboxing since the bindings were available
- Optimized Performance — no runtime garbage collection, resulting in lower memory consumption
- Extensible Protocol — we've been working on a "wire protocol" for Codex CLI to allow developers to extend the agent in different languages (including Type/JavaScript, Python, etc) and MCPs (already supported in Rust)
Now to be fair, these dashes scream "LLM generated" for their entire post. Regardless, if these really are their reasons:
- Zero-dependency Install - there are a ton of languages where this is true. Self-contained installs are possible in Python, C#, Rust, C++, etc. Go is one option here too, but doesn't really provide anything more than the rest of these languages.
- Native Security Bindings - they supposedly already do this in Rust
- Optimized Performance - this seems overblown on their part in my opinion, but no runtime GC seems to constrain us to C, C++, Rust, and some others like Zig. Go, C#, Python, etc all do runtime GC. Regardless, in my opinion, runtime GC doesn't actually matter, and all of these options have enough performance (yes even Python) for what they need.
- Extensible Protocol - this is doable in many languages. It seems to me here that they already have some work in Rust that they want to use.
As for the difficulty in making a CLI, clap makes CLIs dead simple to build with its derive macro. To be clear, other languages can be just as easy (Python has a ton of libraries for this for example including argparse and Typst).
Personally, if I were to choose a language for them, it'd be Python, not Go. It would have the most overlap with their users and could get a lot more contributors as a result in my opinion. Go, on the otherhand, may be a language their devs are less familiar with or don't use as much as Rust or other languages.