Install this version:
emerge -a =dev-util/codex-0.154.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-util/codex-0.154.0
Or alternatively:
emerge --autounmask-write -a =dev-util/codex-0.154.0
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CRATES=""
RUST_MIN_VER="1.95.0"
declare -A GIT_CRATES=(
[appcontainer_common]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/backends/appcontainer/common'
[crossterm]='https://github.com/openai-oss-forks/crossterm;45fecb9508105988f42fe6ff0441783ed3717f92;crossterm-%commit%'
[learning_mode_core]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/core/learning_mode_core'
[learning_mode_windows]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/backends/learning_mode/windows'
[mxc_config_contract]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/core/mxc_config_contract'
[mxc_telemetry]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/mxc_telemetry'
[nucleo-matcher]='https://github.com/helix-editor/nucleo;4253de9faabb4e5c6d81d946a5e35a90f87347ee;nucleo-%commit%/matcher'
[nucleo]='https://github.com/helix-editor/nucleo;4253de9faabb4e5c6d81d946a5e35a90f87347ee;nucleo-%commit%'
[process_security_environment_spec]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/core/generated/process_security_environment_specification'
[runfiles]='https://github.com/dzbarsky/rules_rust;b56cbaa8465e74127f1ea216f813cd377295ad81;rules_rust-%commit%/rust/runfiles'
[sandbox_spec]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/core/generated/base_container_specification'
[tokio-tungstenite]='https://github.com/openai-oss-forks/tokio-tungstenite;0e5b2d73aa18dd9f0a50ee9ff199d5aef7594186;tokio-tungstenite-%commit%'
[tungstenite]='https://github.com/openai-oss-forks/tungstenite-rs;4fffad30fe373adbdcffab9545e9e9bf4f2fc19f;tungstenite-rs-%commit%'
[wxc_common]='https://github.com/microsoft/mxc;6cd3d58f05d3447e67109cfb75e042803b843ca4;mxc-%commit%/src/core/wxc_common'
)
inherit cargo check-reqs edo toolchain-funcs shell-completion
CHECKREQS_MEMORY="12G"
CHECKREQS_DISK_BUILD="10G"
RUSTY_V8_PV="150.4.0"
DESCRIPTION="Lightweight coding agent that runs in your terminal"
HOMEPAGE="https://github.com/openai/codex"
SRC_URI="https://github.com/openai/${PN}/archive/rust-v${PV}.tar.gz -> ${P}.tar.gz
https://github.com/SpiderX/portage-overlay/releases/download/${P}/${P}-crates.tar.xz
amd64? ( https://github.com/openai/${PN}/releases/download/rusty-v8-v${RUSTY_V8_PV}/librusty_v8_ptrcomp_sandbox_release_x86_64-unknown-linux-gnu.a.gz
-> librusty_v8_${RUSTY_V8_PV}_x86_64-unknown-linux-gnu.a.gz
https://github.com/openai/${PN}/releases/download/rusty-v8-v${RUSTY_V8_PV}/src_binding_ptrcomp_sandbox_release_x86_64-unknown-linux-gnu.rs
-> src_binding_${RUSTY_V8_PV}_x86_64-unknown-linux-gnu.rs )
arm64? ( https://github.com/openai/${PN}/releases/download/rusty-v8-v${RUSTY_V8_PV}/librusty_v8_ptrcomp_sandbox_release_aarch64-unknown-linux-gnu.a.gz
-> librusty_v8_${RUSTY_V8_PV}_aarch64-unknown-linux-gnu.a.gz
https://github.com/openai/codex/releases/download/rusty-v8-v150.4.0/src_binding_ptrcomp_sandbox_release_aarch64-unknown-linux-gnu.rs
-> src_binding_${RUSTY_V8_PV}_aarch64-unknown-linux-gnu.rs )
${CARGO_CRATE_URIS}"
S="${WORKDIR}/${PN}-rust-v${PV}/${PN}-rs"
LICENSE="Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0 CC0-1.0 CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 ZLIB"
SLOT="0"
KEYWORDS="-* ~amd64 ~arm64"
DEPEND="app-arch/xz-utils:=
dev-libs/openssl:0=
virtual/zlib:0="
RDEPEND="${DEPEND}
sys-apps/bubblewrap
sys-apps/ripgrep"
BDEPEND="virtual/pkgconfig"
pkg_setup() {
check-reqs_pkg_setup
rust_pkg_setup
}
src_prepare() {
default
for dep in 'crossterm:openai-oss-forks/crossterm' \
'tokio-tungstenite:openai-oss-forks/tokio-tungstenite' \
'tungstenite:openai-oss-forks/tungstenite-rs'
do
sed -i -e "/${dep%%:*} =/s|git = \"https://github.com/${dep#*:}\", rev = \"|path = \"${WORKDIR}/${dep##*/}-|" \
Cargo.toml || die "sed failed for Cargo.toml"
done
}
src_compile() {
local arch=x86_64
use arm64 && arch=aarch64
tc-is-lto || export CARGO_PROFILE_RELEASE_LTO=false
export RUSTY_V8_ARCHIVE="${DISTDIR}"/librusty_v8_"${RUSTY_V8_PV}_${arch}"-unknown-linux-gnu.a.gz \
RUSTY_V8_SRC_BINDING_PATH="${DISTDIR}"/src_binding_"${RUSTY_V8_PV}_${arch}"-unknown-linux-gnu.rs
cargo_src_compile --package codex-cli --package codex-code-mode-host
local completion
for completion in bash fish zsh ; do
edo target/release/codex completion ${completion} > codex.${completion}
done
}
src_test() {
local skip=(
# require working bubblewrap user namespaces; fails under portage sandbox
sandbox_fetches_and_enforces_cloud_managed_permission_profile
sandbox_with_network_proxy_allows_explicit_loopback_access
sandbox_with_network_proxy_blocks_direct_loopback_access )
# run tests in debug mode, as upstream expects; release mode rejects temporary CODEX_HOME paths used by tests.
cargo_env "${CARGO}" test "${ECARGO_ARGS[@]}" --package codex-cli -- "${skip[@]/#/--skip=}" || die "cargo test failed"
}
src_install() {
einstalldocs
dobin "$(cargo_target_dir)"/codex{,-code-mode-host}
newbashcomp codex.bash codex
newfishcomp codex.fish codex
newzshcomp codex.zsh _codex
}
app-arch/xz-utils:= dev-libs/openssl:0= virtual/zlib:0=
app-arch/xz-utils:= dev-libs/openssl:0= virtual/zlib:0= sys-apps/bubblewrap sys-apps/ripgrep
virtual/pkgconfig