git: 3b3f8b54b760 - main - misc/codex: update to 0.42.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Sat, 27 Sep 2025 14:48:17 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3b3f8b54b760ff25cd05a621b44c69dfbc229562

commit 3b3f8b54b760ff25cd05a621b44c69dfbc229562
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-09-27 14:45:14 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-09-27 14:48:02 +0000

    misc/codex: update to 0.42.0
    
    While here:
    - add missing test dependencies
    - add patches to adjust paths of bash and python3 executables
    
    Changelog: https://github.com/openai/codex/releases/tag/rust-v0.42.0
    
    Reported by:    GitHub (watch releases)
---
 misc/codex/Makefile                                | 12 ++++-
 misc/codex/Makefile.crates                         | 28 ++++++++++
 misc/codex/distinfo                                | 62 ++++++++++++++++++++--
 misc/codex/files/patch-codex-rs_cli_Cargo.toml     | 12 +++++
 misc/codex/files/patch-codex-rs_cli_src_main.rs    | 12 +++++
 .../patch-codex-rs_cli_src_pre__main__hardening.rs | 60 +++++++++++++++++++++
 ...core_src_exec__command_exec__command__params.rs | 11 ++++
 ...dex-rs_core_src_exec__command_responses__api.rs | 11 ++++
 ...x-rs_core_src_exec__command_session__manager.rs | 11 ++++
 .../patch-codex-rs_core_src_unified__exec_mod.rs   | 38 +++++++++++++
 .../files/patch-codex-rs_core_tests_suite_exec.rs  | 11 ++++
 ...codex-rs_core_tests_suite_user__notification.rs | 11 ++++
 .../files/patch-codex-rs_exec_tests_suite_mod.rs   |  6 +--
 13 files changed, 277 insertions(+), 8 deletions(-)

diff --git a/misc/codex/Makefile b/misc/codex/Makefile
index b4435a465289..c1b376a2ae94 100644
--- a/misc/codex/Makefile
+++ b/misc/codex/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	codex
 DISTVERSIONPREFIX=	rust-v
-DISTVERSION=	0.41.0
+DISTVERSION=	0.42.0
 CATEGORIES=	misc devel
 
 MAINTAINER=	tagattie@FreeBSD.org
@@ -13,8 +13,9 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 
 LIB_DEPENDS=	libonig.so:devel/oniguruma
 RUN_DEPENDS=	rg:textproc/ripgrep
+TEST_DEPENDS=	bash:shells/bash
 
-USES=		cargo ssl
+USES=		cargo python:test ssl
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	openai
@@ -40,6 +41,13 @@ COMPLETIONS_PLIST_FILES=etc/bash_completion.d/${PORTNAME} \
 			share/fish/completions/${PORTNAME}.fish \
 			share/zsh/site-functions/_${PORTNAME}
 
+post-patch:
+	@${REINPLACE_CMD} -e 's|/bin/bash|${LOCALBASE}&|' \
+		${BUILD_WRKSRC}/core/src/environment_context.rs \
+		${BUILD_WRKSRC}/core/src/shell.rs
+	@${REINPLACE_CMD} -e 's|python3|${PYTHON_VERSION}|' \
+		${BUILD_WRKSRC}/core/src/exec_command/session_manager.rs
+
 post-build-COMPLETIONS-on:
 	@${MKDIR} ${WRKSRC}/completions
 .for sh in bash fish zsh
diff --git a/misc/codex/Makefile.crates b/misc/codex/Makefile.crates
index eb0e00d11445..c027b43d1e14 100644
--- a/misc/codex/Makefile.crates
+++ b/misc/codex/Makefile.crates
@@ -52,6 +52,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		cesu8-1.1.0 \
 		cfg-if-1.0.1 \
 		cfg_aliases-0.1.1 \
+		cfg_aliases-0.2.1 \
 		chrono-0.4.42 \
 		chunked_transfer-1.5.0 \
 		clap-4.5.47 \
@@ -83,9 +84,14 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		crunchy-0.2.4 \
 		crypto-common-0.1.6 \
 		ctor-0.1.26 \
+		ctor-0.5.0 \
+		ctor-proc-macro-0.0.6 \
 		darling-0.20.11 \
+		darling-0.21.3 \
 		darling_core-0.20.11 \
+		darling_core-0.21.3 \
 		darling_macro-0.20.11 \
+		darling_macro-0.21.3 \
 		deadpool-0.12.3 \
 		deadpool-runtime-0.1.4 \
 		debugserver-types-0.5.0 \
@@ -109,6 +115,8 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		doc-comment-0.3.3 \
 		dotenvy-0.15.7 \
 		downcast-rs-1.2.1 \
+		dtor-0.1.0 \
+		dtor-proc-macro-0.0.6 \
 		dupe-0.9.1 \
 		dupe_derive-0.9.1 \
 		dyn-clone-1.0.19 \
@@ -126,6 +134,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		erased-serde-0.3.31 \
 		errno-0.3.13 \
 		error-code-3.3.2 \
+		escargot-0.5.15 \
 		event-listener-5.4.0 \
 		event-listener-strategy-0.5.4 \
 		eventsource-stream-0.2.3 \
@@ -236,6 +245,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		logos-0.12.1 \
 		logos-derive-0.12.1 \
 		lru-0.12.5 \
+		lru-slab-0.1.2 \
 		lsp-types-0.94.1 \
 		maplit-1.0.2 \
 		matchers-0.2.0 \
@@ -253,6 +263,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		new_debug_unreachable-1.0.6 \
 		nibble_vec-0.1.0 \
 		nix-0.28.0 \
+		nix-0.30.1 \
 		nom-7.1.3 \
 		normalize-line-endings-0.3.0 \
 		nu-ansi-term-0.50.1 \
@@ -309,11 +320,15 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		predicates-tree-1.0.12 \
 		pretty_assertions-1.4.1 \
 		proc-macro2-1.0.95 \
+		process-wrap-8.2.1 \
 		pulldown-cmark-0.10.3 \
 		pulldown-cmark-escape-0.10.1 \
 		pxfm-0.1.23 \
 		quick-error-2.0.1 \
 		quick-xml-0.38.0 \
+		quinn-0.11.9 \
+		quinn-proto-0.11.13 \
+		quinn-udp-0.5.14 \
 		quote-1.0.40 \
 		r-efi-5.3.0 \
 		radix_trie-0.2.1 \
@@ -332,7 +347,10 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		regex-syntax-0.8.5 \
 		reqwest-0.12.23 \
 		ring-0.17.14 \
+		rmcp-0.7.0 \
+		rmcp-macros-0.7.0 \
 		rustc-demangle-0.1.25 \
+		rustc-hash-2.1.1 \
 		rustix-0.38.44 \
 		rustix-1.0.8 \
 		rustls-0.23.29 \
@@ -350,6 +368,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		schemars-0.9.0 \
 		schemars-1.0.4 \
 		schemars_derive-0.8.22 \
+		schemars_derive-1.0.4 \
 		scopeguard-1.2.0 \
 		seccompiler-0.5.0 \
 		security-framework-2.11.1 \
@@ -424,6 +443,8 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		tiny-keccak-2.0.2 \
 		tiny_http-0.12.0 \
 		tinystr-0.8.1 \
+		tinyvec-1.10.0 \
+		tinyvec_macros-0.1.1 \
 		tokio-1.47.1 \
 		tokio-macros-2.5.0 \
 		tokio-native-tls-0.3.1 \
@@ -486,7 +507,9 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		wasm-bindgen-shared-0.2.100 \
 		wasm-streams-0.4.2 \
 		web-sys-0.3.77 \
+		web-time-1.1.0 \
 		webbrowser-1.0.5 \
+		webpki-roots-1.0.2 \
 		weezl-0.1.10 \
 		which-6.0.3 \
 		wildmatch-2.5.0 \
@@ -494,11 +517,15 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		winapi-i686-pc-windows-gnu-0.4.0 \
 		winapi-util-0.1.9 \
 		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-0.61.3 \
+		windows-collections-0.2.0 \
 		windows-core-0.61.2 \
+		windows-future-0.2.1 \
 		windows-implement-0.60.0 \
 		windows-interface-0.59.1 \
 		windows-link-0.1.3 \
 		windows-link-0.2.0 \
+		windows-numerics-0.2.0 \
 		windows-registry-0.5.3 \
 		windows-result-0.3.4 \
 		windows-strings-0.4.2 \
@@ -510,6 +537,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		windows-targets-0.48.5 \
 		windows-targets-0.52.6 \
 		windows-targets-0.53.2 \
+		windows-threading-0.1.0 \
 		windows_aarch64_gnullvm-0.42.2 \
 		windows_aarch64_gnullvm-0.48.5 \
 		windows_aarch64_gnullvm-0.52.6 \
diff --git a/misc/codex/distinfo b/misc/codex/distinfo
index 5a49245005d4..965098acf32d 100644
--- a/misc/codex/distinfo
+++ b/misc/codex/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1758850925
+TIMESTAMP = 1758959755
 SHA256 (rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3
 SIZE (rust/crates/Inflector-0.11.4.crate) = 17438
 SHA256 (rust/crates/addr2line-0.24.2.crate) = dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1
@@ -107,6 +107,8 @@ SHA256 (rust/crates/cfg-if-1.0.1.crate) = 9555578bc9e57714c812a1f84e4fc5b4d21fcb
 SIZE (rust/crates/cfg-if-1.0.1.crate) = 8683
 SHA256 (rust/crates/cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e
 SIZE (rust/crates/cfg_aliases-0.1.1.crate) = 6009
+SHA256 (rust/crates/cfg_aliases-0.2.1.crate) = 613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724
+SIZE (rust/crates/cfg_aliases-0.2.1.crate) = 6355
 SHA256 (rust/crates/chrono-0.4.42.crate) = 145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2
 SIZE (rust/crates/chrono-0.4.42.crate) = 238174
 SHA256 (rust/crates/chunked_transfer-1.5.0.crate) = 6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901
@@ -169,12 +171,22 @@ SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d
 SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
 SHA256 (rust/crates/ctor-0.1.26.crate) = 6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096
 SIZE (rust/crates/ctor-0.1.26.crate) = 10803
+SHA256 (rust/crates/ctor-0.5.0.crate) = 67773048316103656a637612c4a62477603b777d91d9c62ff2290f9cde178fdb
+SIZE (rust/crates/ctor-0.5.0.crate) = 14210
+SHA256 (rust/crates/ctor-proc-macro-0.0.6.crate) = e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2
+SIZE (rust/crates/ctor-proc-macro-0.0.6.crate) = 6435
 SHA256 (rust/crates/darling-0.20.11.crate) = fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee
 SIZE (rust/crates/darling-0.20.11.crate) = 37614
+SHA256 (rust/crates/darling-0.21.3.crate) = 9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0
+SIZE (rust/crates/darling-0.21.3.crate) = 41398
 SHA256 (rust/crates/darling_core-0.20.11.crate) = 0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e
 SIZE (rust/crates/darling_core-0.20.11.crate) = 68006
+SHA256 (rust/crates/darling_core-0.21.3.crate) = 1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4
+SIZE (rust/crates/darling_core-0.21.3.crate) = 74471
 SHA256 (rust/crates/darling_macro-0.20.11.crate) = fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead
 SIZE (rust/crates/darling_macro-0.20.11.crate) = 2532
+SHA256 (rust/crates/darling_macro-0.21.3.crate) = d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81
+SIZE (rust/crates/darling_macro-0.21.3.crate) = 2535
 SHA256 (rust/crates/deadpool-0.12.3.crate) = 0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b
 SIZE (rust/crates/deadpool-0.12.3.crate) = 45380
 SHA256 (rust/crates/deadpool-runtime-0.1.4.crate) = 092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b
@@ -221,6 +233,10 @@ SHA256 (rust/crates/dotenvy-0.15.7.crate) = 1aaf95b3e5c8f23aa320147307562d361db0
 SIZE (rust/crates/dotenvy-0.15.7.crate) = 20293
 SHA256 (rust/crates/downcast-rs-1.2.1.crate) = 75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2
 SIZE (rust/crates/downcast-rs-1.2.1.crate) = 11821
+SHA256 (rust/crates/dtor-0.1.0.crate) = e58a0764cddb55ab28955347b45be00ade43d4d6f3ba4bf3dc354e4ec9432934
+SIZE (rust/crates/dtor-0.1.0.crate) = 11358
+SHA256 (rust/crates/dtor-proc-macro-0.0.6.crate) = f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5
+SIZE (rust/crates/dtor-proc-macro-0.0.6.crate) = 6448
 SHA256 (rust/crates/dupe-0.9.1.crate) = 6ed2bc011db9c93fbc2b6cdb341a53737a55bafb46dbb74cf6764fc33a2fbf9c
 SIZE (rust/crates/dupe-0.9.1.crate) = 7525
 SHA256 (rust/crates/dupe_derive-0.9.1.crate) = 83e195b4945e88836d826124af44fdcb262ec01ef94d44f14f4fb5103f19892a
@@ -255,6 +271,8 @@ SHA256 (rust/crates/errno-0.3.13.crate) = 778e2ac28f6c47af28e4907f13ffd1e1ddbd40
 SIZE (rust/crates/errno-0.3.13.crate) = 12449
 SHA256 (rust/crates/error-code-3.3.2.crate) = dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59
 SIZE (rust/crates/error-code-3.3.2.crate) = 8516
+SHA256 (rust/crates/escargot-0.5.15.crate) = 11c3aea32bc97b500c9ca6a72b768a26e558264303d101d3409cf6d57a9ed0cf
+SIZE (rust/crates/escargot-0.5.15.crate) = 21657
 SHA256 (rust/crates/event-listener-5.4.0.crate) = 3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae
 SIZE (rust/crates/event-listener-5.4.0.crate) = 43452
 SHA256 (rust/crates/event-listener-strategy-0.5.4.crate) = 8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93
@@ -475,6 +493,8 @@ SHA256 (rust/crates/logos-derive-0.12.1.crate) = a1d849148dbaf9661a6151d1ca82b13
 SIZE (rust/crates/logos-derive-0.12.1.crate) = 32282
 SHA256 (rust/crates/lru-0.12.5.crate) = 234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38
 SIZE (rust/crates/lru-0.12.5.crate) = 16047
+SHA256 (rust/crates/lru-slab-0.1.2.crate) = 112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154
+SIZE (rust/crates/lru-slab-0.1.2.crate) = 9090
 SHA256 (rust/crates/lsp-types-0.94.1.crate) = c66bfd44a06ae10647fe3f8214762e9369fd4248df1350924b4ef9e770a85ea1
 SIZE (rust/crates/lsp-types-0.94.1.crate) = 66997
 SHA256 (rust/crates/maplit-1.0.2.crate) = 3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d
@@ -509,6 +529,8 @@ SHA256 (rust/crates/nibble_vec-0.1.0.crate) = 77a5d83df9f36fe23f0c3648c6bbb8b029
 SIZE (rust/crates/nibble_vec-0.1.0.crate) = 11796
 SHA256 (rust/crates/nix-0.28.0.crate) = ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4
 SIZE (rust/crates/nix-0.28.0.crate) = 311086
+SHA256 (rust/crates/nix-0.30.1.crate) = 74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6
+SIZE (rust/crates/nix-0.30.1.crate) = 342015
 SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
 SIZE (rust/crates/nom-7.1.3.crate) = 117570
 SHA256 (rust/crates/normalize-line-endings-0.3.0.crate) = 61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be
@@ -621,6 +643,8 @@ SHA256 (rust/crates/pretty_assertions-1.4.1.crate) = 3ae130e2f271fbc2ac3a40fb1d0
 SIZE (rust/crates/pretty_assertions-1.4.1.crate) = 78952
 SHA256 (rust/crates/proc-macro2-1.0.95.crate) = 02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778
 SIZE (rust/crates/proc-macro2-1.0.95.crate) = 51820
+SHA256 (rust/crates/process-wrap-8.2.1.crate) = a3ef4f2f0422f23a82ec9f628ea2acd12871c81a9362b02c43c1aa86acfc3ba1
+SIZE (rust/crates/process-wrap-8.2.1.crate) = 182312
 SHA256 (rust/crates/pulldown-cmark-0.10.3.crate) = 76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993
 SIZE (rust/crates/pulldown-cmark-0.10.3.crate) = 141746
 SHA256 (rust/crates/pulldown-cmark-escape-0.10.1.crate) = bd348ff538bc9caeda7ee8cad2d1d48236a1f443c1fa3913c6a02fe0043b1dd3
@@ -631,6 +655,12 @@ SHA256 (rust/crates/quick-error-2.0.1.crate) = a993555f31e5a609f617c12db6250dedc
 SIZE (rust/crates/quick-error-2.0.1.crate) = 14265
 SHA256 (rust/crates/quick-xml-0.38.0.crate) = 8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b
 SIZE (rust/crates/quick-xml-0.38.0.crate) = 196570
+SHA256 (rust/crates/quinn-0.11.9.crate) = b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20
+SIZE (rust/crates/quinn-0.11.9.crate) = 83606
+SHA256 (rust/crates/quinn-proto-0.11.13.crate) = f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31
+SIZE (rust/crates/quinn-proto-0.11.13.crate) = 243837
+SHA256 (rust/crates/quinn-udp-0.5.14.crate) = addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd
+SIZE (rust/crates/quinn-udp-0.5.14.crate) = 33436
 SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d
 SIZE (rust/crates/quote-1.0.40.crate) = 31063
 SHA256 (rust/crates/r-efi-5.3.0.crate) = 69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f
@@ -667,8 +697,14 @@ SHA256 (rust/crates/reqwest-0.12.23.crate) = d429f34c8092b2d42c7c93cec323bb4adeb
 SIZE (rust/crates/reqwest-0.12.23.crate) = 161307
 SHA256 (rust/crates/ring-0.17.14.crate) = a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7
 SIZE (rust/crates/ring-0.17.14.crate) = 1502610
+SHA256 (rust/crates/rmcp-0.7.0.crate) = 534fd1cd0601e798ac30545ff2b7f4a62c6f14edd4aaed1cc5eb1e85f69f09af
+SIZE (rust/crates/rmcp-0.7.0.crate) = 180670
+SHA256 (rust/crates/rmcp-macros-0.7.0.crate) = 9ba777eb0e5f53a757e36f0e287441da0ab766564ba7201600eeb92a4753022e
+SIZE (rust/crates/rmcp-macros-0.7.0.crate) = 13213
 SHA256 (rust/crates/rustc-demangle-0.1.25.crate) = 989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f
 SIZE (rust/crates/rustc-demangle-0.1.25.crate) = 29590
+SHA256 (rust/crates/rustc-hash-2.1.1.crate) = 357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d
+SIZE (rust/crates/rustc-hash-2.1.1.crate) = 14154
 SHA256 (rust/crates/rustix-0.38.44.crate) = fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154
 SIZE (rust/crates/rustix-0.38.44.crate) = 379347
 SHA256 (rust/crates/rustix-1.0.8.crate) = 11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8
@@ -703,6 +739,8 @@ SHA256 (rust/crates/schemars-1.0.4.crate) = 82d20c4491bc164fa2f6c5d44565947a52ad
 SIZE (rust/crates/schemars-1.0.4.crate) = 88282
 SHA256 (rust/crates/schemars_derive-0.8.22.crate) = 32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d
 SIZE (rust/crates/schemars_derive-0.8.22.crate) = 19542
+SHA256 (rust/crates/schemars_derive-1.0.4.crate) = 33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80
+SIZE (rust/crates/schemars_derive-1.0.4.crate) = 31126
 SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
 SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
 SHA256 (rust/crates/seccompiler-0.5.0.crate) = a4ae55de56877481d112a559bbc12667635fdaf5e005712fd4e2b2fa50ffc884
@@ -851,6 +889,10 @@ SHA256 (rust/crates/tiny_http-0.12.0.crate) = 389915df6413a2e74fb181895f93338602
 SIZE (rust/crates/tiny_http-0.12.0.crate) = 51330
 SHA256 (rust/crates/tinystr-0.8.1.crate) = 5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b
 SIZE (rust/crates/tinystr-0.8.1.crate) = 23333
+SHA256 (rust/crates/tinyvec-1.10.0.crate) = bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa
+SIZE (rust/crates/tinyvec-1.10.0.crate) = 51996
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
 SHA256 (rust/crates/tokio-1.47.1.crate) = 89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038
 SIZE (rust/crates/tokio-1.47.1.crate) = 829790
 SHA256 (rust/crates/tokio-macros-2.5.0.crate) = 6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8
@@ -975,8 +1017,12 @@ SHA256 (rust/crates/wasm-streams-0.4.2.crate) = 15053d8d85c7eccdbefef60f06769760
 SIZE (rust/crates/wasm-streams-0.4.2.crate) = 36773
 SHA256 (rust/crates/web-sys-0.3.77.crate) = 33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2
 SIZE (rust/crates/web-sys-0.3.77.crate) = 638246
+SHA256 (rust/crates/web-time-1.1.0.crate) = 5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb
+SIZE (rust/crates/web-time-1.1.0.crate) = 18026
 SHA256 (rust/crates/webbrowser-1.0.5.crate) = aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98
 SIZE (rust/crates/webbrowser-1.0.5.crate) = 56190
+SHA256 (rust/crates/webpki-roots-1.0.2.crate) = 7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2
+SIZE (rust/crates/webpki-roots-1.0.2.crate) = 255109
 SHA256 (rust/crates/weezl-0.1.10.crate) = a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3
 SIZE (rust/crates/weezl-0.1.10.crate) = 46418
 SHA256 (rust/crates/which-6.0.3.crate) = b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f
@@ -991,8 +1037,14 @@ SHA256 (rust/crates/winapi-util-0.1.9.crate) = cf221c93e13a30d793f7645a0e7762c55
 SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
 SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
 SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-0.61.3.crate) = 9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893
+SIZE (rust/crates/windows-0.61.3.crate) = 9372520
+SHA256 (rust/crates/windows-collections-0.2.0.crate) = 3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8
+SIZE (rust/crates/windows-collections-0.2.0.crate) = 13579
 SHA256 (rust/crates/windows-core-0.61.2.crate) = c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3
 SIZE (rust/crates/windows-core-0.61.2.crate) = 36771
+SHA256 (rust/crates/windows-future-0.2.1.crate) = fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e
+SIZE (rust/crates/windows-future-0.2.1.crate) = 17532
 SHA256 (rust/crates/windows-implement-0.60.0.crate) = a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836
 SIZE (rust/crates/windows-implement-0.60.0.crate) = 15073
 SHA256 (rust/crates/windows-interface-0.59.1.crate) = bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8
@@ -1001,6 +1053,8 @@ SHA256 (rust/crates/windows-link-0.1.3.crate) = 5e6ad25900d524eaabdbbb96d20b4311
 SIZE (rust/crates/windows-link-0.1.3.crate) = 6154
 SHA256 (rust/crates/windows-link-0.2.0.crate) = 45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65
 SIZE (rust/crates/windows-link-0.2.0.crate) = 6170
+SHA256 (rust/crates/windows-numerics-0.2.0.crate) = 9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1
+SIZE (rust/crates/windows-numerics-0.2.0.crate) = 9686
 SHA256 (rust/crates/windows-registry-0.5.3.crate) = 5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e
 SIZE (rust/crates/windows-registry-0.5.3.crate) = 13386
 SHA256 (rust/crates/windows-result-0.3.4.crate) = 56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6
@@ -1023,6 +1077,8 @@ SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d478
 SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
 SHA256 (rust/crates/windows-targets-0.53.2.crate) = c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef
 SIZE (rust/crates/windows-targets-0.53.2.crate) = 7046
+SHA256 (rust/crates/windows-threading-0.1.0.crate) = b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6
+SIZE (rust/crates/windows-threading-0.1.0.crate) = 9085
 SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
 SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
 SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
@@ -1127,5 +1183,5 @@ SHA256 (rust/crates/zune-jpeg-0.4.19.crate) = 2c9e525af0a6a658e031e95f14b7f88997
 SIZE (rust/crates/zune-jpeg-0.4.19.crate) = 66341
 SHA256 (nornagon-ratatui-9b2ad1298408c45918ee9f8241a6f95498cdbed2_GH0.tar.gz) = b252c02145e5abbfc170466788bbeeb53a3365fcbc8a5621f28f79badd1f6a70
 SIZE (nornagon-ratatui-9b2ad1298408c45918ee9f8241a6f95498cdbed2_GH0.tar.gz) = 566574
-SHA256 (openai-codex-rust-v0.41.0_GH0.tar.gz) = 8f73c6f99621aa106d0a5a62ecee5f2754521ae05a6cd90f2b9a88b8cf24d749
-SIZE (openai-codex-rust-v0.41.0_GH0.tar.gz) = 27378186
+SHA256 (openai-codex-rust-v0.42.0_GH0.tar.gz) = e0ac101e004f6aa7b8b88d23e822e4fc157e390ee1646d435b06fd1a1e5378aa
+SIZE (openai-codex-rust-v0.42.0_GH0.tar.gz) = 27415056
diff --git a/misc/codex/files/patch-codex-rs_cli_Cargo.toml b/misc/codex/files/patch-codex-rs_cli_Cargo.toml
new file mode 100644
index 000000000000..628216c84f5f
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_cli_Cargo.toml
@@ -0,0 +1,12 @@
+--- codex-rs/cli/Cargo.toml.orig	2025-09-27 08:06:01 UTC
++++ codex-rs/cli/Cargo.toml
+@@ -52,6 +52,9 @@ libc = { workspace = true }
+ [target.'cfg(target_os = "macos")'.dependencies]
+ libc = { workspace = true }
+ 
++[target.'cfg(target_os = "freebsd")'.dependencies]
++libc = { workspace = true }
++
+ [dev-dependencies]
+ assert_cmd = { workspace = true }
+ predicates = { workspace = true }
diff --git a/misc/codex/files/patch-codex-rs_cli_src_main.rs b/misc/codex/files/patch-codex-rs_cli_src_main.rs
new file mode 100644
index 000000000000..577f39d19f85
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_cli_src_main.rs
@@ -0,0 +1,12 @@
+--- codex-rs/cli/src/main.rs.orig	2025-09-27 08:29:56 UTC
++++ codex-rs/cli/src/main.rs
+@@ -219,6 +219,9 @@ fn pre_main_hardening() {
+         #[cfg(target_os = "macos")]
+         crate::pre_main_hardening::pre_main_hardening_macos();
+ 
++        #[cfg(target_os = "freebsd")]
++        crate::pre_main_hardening::pre_main_hardening_freebsd();
++
+         #[cfg(windows)]
+         crate::pre_main_hardening::pre_main_hardening_windows();
+     }
diff --git a/misc/codex/files/patch-codex-rs_cli_src_pre__main__hardening.rs b/misc/codex/files/patch-codex-rs_cli_src_pre__main__hardening.rs
new file mode 100644
index 000000000000..7302568f4512
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_cli_src_pre__main__hardening.rs
@@ -0,0 +1,60 @@
+--- codex-rs/cli/src/pre_main_hardening.rs.orig	2025-09-26 18:28:59 UTC
++++ codex-rs/cli/src/pre_main_hardening.rs
+@@ -4,9 +4,12 @@ const PTRACE_DENY_ATTACH_FAILED_EXIT_CODE: i32 = 6;
+ #[cfg(target_os = "macos")]
+ const PTRACE_DENY_ATTACH_FAILED_EXIT_CODE: i32 = 6;
+ 
+-#[cfg(any(target_os = "linux", target_os = "android", target_os = "macos"))]
++#[cfg(any(target_os = "linux", target_os = "android", target_os = "macos", target_os = "freebsd"))]
+ const SET_RLIMIT_CORE_FAILED_EXIT_CODE: i32 = 7;
+ 
++#[cfg(target_os = "freebsd")]
++const PROCCTL_PROC_TRACE_CTL_FAILED_EXIT_CODE: i32 = 8;
++
+ #[cfg(any(target_os = "linux", target_os = "android"))]
+ pub(crate) fn pre_main_hardening_linux() {
+     // Disable ptrace attach / mark process non-dumpable.
+@@ -69,6 +72,43 @@ pub(crate) fn pre_main_hardening_macos() {
+         .collect();
+ 
+     for key in dyld_keys {
++        unsafe {
++            std::env::remove_var(key);
++        }
++    }
++}
++
++#[cfg(target_os = "freebsd")]
++pub(crate) fn pre_main_hardening_freebsd() {
++    // Prevent debuggers from attaching to this process
++    let mut arg = libc::PROC_TRACE_CTL_DISABLE_EXEC;
++    let ret_code = unsafe {
++        libc::procctl(libc::P_PID, 0, libc::PROC_TRACE_CTL, &mut arg as *mut _ as *mut libc::c_void)
++    };
++    if ret_code == -1 {
++        eprintln!(
++            "ERROR: procctl(PROC_TRACE_CTL) failed: {}",
++            std::io::Error::last_os_error()
++        );
++        std::process::exit(PROCCTL_PROC_TRACE_CTL_FAILED_EXIT_CODE);
++    }
++
++    // Set the core file size limit to 0 to prevent core dumps.
++    set_core_file_size_limit_to_zero();
++
++    // Remove all LD_ environment variables, which can be used to subvert
++    // library loading.
++    let ld_keys: Vec<String> = std::env::vars()
++        .filter_map(|(key, _)| {
++            if key.starts_with("LD_") {
++                Some(key)
++            } else {
++                None
++            }
++        })
++        .collect();
++
++    for key in ld_keys {
+         unsafe {
+             std::env::remove_var(key);
+         }
diff --git a/misc/codex/files/patch-codex-rs_core_src_exec__command_exec__command__params.rs b/misc/codex/files/patch-codex-rs_core_src_exec__command_exec__command__params.rs
new file mode 100644
index 000000000000..60eb99d35251
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_src_exec__command_exec__command__params.rs
@@ -0,0 +1,11 @@
+--- codex-rs/core/src/exec_command/exec_command_params.rs.orig	2025-09-27 09:00:51 UTC
++++ codex-rs/core/src/exec_command/exec_command_params.rs
+@@ -33,7 +33,7 @@ fn default_shell() -> String {
+ }
+ 
+ fn default_shell() -> String {
+-    "/bin/bash".to_string()
++    "/bin/sh".to_string()
+ }
+ 
+ #[derive(Debug, Deserialize, Serialize)]
diff --git a/misc/codex/files/patch-codex-rs_core_src_exec__command_responses__api.rs b/misc/codex/files/patch-codex-rs_core_src_exec__command_responses__api.rs
new file mode 100644
index 000000000000..b900e89ad10f
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_src_exec__command_responses__api.rs
@@ -0,0 +1,11 @@
+--- codex-rs/core/src/exec_command/responses_api.rs.orig	2025-09-27 09:01:29 UTC
++++ codex-rs/core/src/exec_command/responses_api.rs
+@@ -29,7 +29,7 @@ pub fn create_exec_command_tool_for_responses_api() ->
+     properties.insert(
+         "shell".to_string(),
+         JsonSchema::String {
+-            description: Some("The shell to use. Defaults to \"/bin/bash\".".to_string()),
++            description: Some("The shell to use. Defaults to \"/bin/sh\".".to_string()),
+         },
+     );
+     properties.insert(
diff --git a/misc/codex/files/patch-codex-rs_core_src_exec__command_session__manager.rs b/misc/codex/files/patch-codex-rs_core_src_exec__command_session__manager.rs
new file mode 100644
index 000000000000..a5db5d4efccb
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_src_exec__command_session__manager.rs
@@ -0,0 +1,11 @@
+--- codex-rs/core/src/exec_command/session_manager.rs.orig	2025-09-27 09:02:31 UTC
++++ codex-rs/core/src/exec_command/session_manager.rs
+@@ -376,7 +376,7 @@ PY"#
+             cmd,
+             yield_time_ms: 3_000,
+             max_output_tokens: 1_000, // large enough to avoid truncation here
+-            shell: "/bin/bash".to_string(),
++            shell: "/bin/sh".to_string(),
+             login: false,
+         };
+         let initial_output = match session_manager
diff --git a/misc/codex/files/patch-codex-rs_core_src_unified__exec_mod.rs b/misc/codex/files/patch-codex-rs_core_src_unified__exec_mod.rs
new file mode 100644
index 000000000000..77088343e65d
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_src_unified__exec_mod.rs
@@ -0,0 +1,38 @@
+--- codex-rs/core/src/unified_exec/mod.rs.orig	2025-09-27 09:05:00 UTC
++++ codex-rs/core/src/unified_exec/mod.rs
+@@ -434,7 +434,7 @@ mod tests {
+         let open_shell = manager
+             .handle_request(UnifiedExecRequest {
+                 session_id: None,
+-                input_chunks: &["bash".to_string(), "-i".to_string()],
++                input_chunks: &["sh".to_string(), "-i".to_string()],
+                 timeout_ms: Some(2_500),
+             })
+             .await?;
+@@ -473,7 +473,7 @@ mod tests {
+         let shell_a = manager
+             .handle_request(UnifiedExecRequest {
+                 session_id: None,
+-                input_chunks: &["/bin/bash".to_string(), "-i".to_string()],
++                input_chunks: &["/bin/sh".to_string(), "-i".to_string()],
+                 timeout_ms: Some(2_500),
+             })
+             .await?;
+@@ -521,7 +521,7 @@ mod tests {
+         let open_shell = manager
+             .handle_request(UnifiedExecRequest {
+                 session_id: None,
+-                input_chunks: &["bash".to_string(), "-i".to_string()],
++                input_chunks: &["sh".to_string(), "-i".to_string()],
+                 timeout_ms: Some(2_500),
+             })
+             .await?;
+@@ -616,7 +616,7 @@ mod tests {
+         let open_shell = manager
+             .handle_request(UnifiedExecRequest {
+                 session_id: None,
+-                input_chunks: &["/bin/bash".to_string(), "-i".to_string()],
++                input_chunks: &["/bin/sh".to_string(), "-i".to_string()],
+                 timeout_ms: Some(2_500),
+             })
+             .await?;
diff --git a/misc/codex/files/patch-codex-rs_core_tests_suite_exec.rs b/misc/codex/files/patch-codex-rs_core_tests_suite_exec.rs
new file mode 100644
index 000000000000..3b232ec4c752
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_tests_suite_exec.rs
@@ -0,0 +1,11 @@
+--- codex-rs/core/tests/suite/exec.rs.orig	2025-09-27 09:06:53 UTC
++++ codex-rs/core/tests/suite/exec.rs
+@@ -104,7 +104,7 @@ async fn exit_command_not_found_is_ok() {
+     }
+ 
+     let tmp = TempDir::new().expect("should be able to create temp dir");
+-    let cmd = vec!["/bin/bash", "-c", "nonexistent_command_12345"];
++    let cmd = vec!["/bin/sh", "-c", "nonexistent_command_12345"];
+     run_test_cmd(tmp, cmd).await.unwrap();
+ }
+ 
diff --git a/misc/codex/files/patch-codex-rs_core_tests_suite_user__notification.rs b/misc/codex/files/patch-codex-rs_core_tests_suite_user__notification.rs
new file mode 100644
index 000000000000..85e58a77a1ae
--- /dev/null
+++ b/misc/codex/files/patch-codex-rs_core_tests_suite_user__notification.rs
@@ -0,0 +1,11 @@
+--- codex-rs/core/tests/suite/user_notification.rs.orig	2025-09-27 09:08:21 UTC
++++ codex-rs/core/tests/suite/user_notification.rs
+@@ -35,7 +35,7 @@ async fn summarize_context_three_requests_and_instruct
+     let notify_script = notify_dir.path().join("notify.sh");
+     std::fs::write(
+         &notify_script,
+-        r#"#!/bin/bash
++        r#"#!/bin/sh
+ set -e
+ echo -n "${@: -1}" > $(dirname "${0}")/notify.txt"#,
+     )?;
diff --git a/misc/codex/files/patch-codex-rs_exec_tests_suite_mod.rs b/misc/codex/files/patch-codex-rs_exec_tests_suite_mod.rs
index 64175a1a5d63..35dee0499c66 100644
--- a/misc/codex/files/patch-codex-rs_exec_tests_suite_mod.rs
+++ b/misc/codex/files/patch-codex-rs_exec_tests_suite_mod.rs
@@ -1,7 +1,7 @@
---- codex-rs/exec/tests/suite/mod.rs.orig	2025-09-24 16:56:31 UTC
+--- codex-rs/exec/tests/suite/mod.rs.orig	2025-09-26 18:28:59 UTC
 +++ codex-rs/exec/tests/suite/mod.rs
-@@ -3,4 +3,5 @@ mod resume;
- mod common;
+@@ -2,4 +2,5 @@ mod resume;
+ mod apply_patch;
  mod output_schema;
  mod resume;
 +#[cfg(not(target_os = "freebsd"))]