diff --git a/codex-rs/code-mode/src/runtime/globals.rs b/codex-rs/code-mode/src/runtime/globals.rs index b40136c44c..2ec6953f09 100644 --- a/codex-rs/code-mode/src/runtime/globals.rs +++ b/codex-rs/code-mode/src/runtime/globals.rs @@ -12,11 +12,10 @@ use super::callbacks::yield_control_callback; pub(super) fn install_globals(scope: &mut v8::PinScope<'_, '_>) -> Result<(), String> { let global = scope.get_current_context().global(scope); - let console = v8::String::new(scope, "console") - .ok_or_else(|| "failed to allocate global `console`".to_string())?; - if global.delete(scope, console.into()) != Some(true) { - return Err("failed to remove global `console`".to_string()); - } + delete_global(scope, global, "console")?; + delete_global(scope, global, "Atomics")?; + delete_global(scope, global, "SharedArrayBuffer")?; + delete_global(scope, global, "WebAssembly")?; let tools = build_tools_object(scope)?; let all_tools = build_all_tools_value(scope)?; @@ -142,3 +141,17 @@ fn set_global<'s>( Err(format!("failed to set global `{name}`")) } } + +fn delete_global<'s>( + scope: &mut v8::PinScope<'s, '_>, + global: v8::Local<'s, v8::Object>, + name: &str, +) -> Result<(), String> { + let key = v8::String::new(scope, name) + .ok_or_else(|| format!("failed to allocate global `{name}`"))?; + if global.delete(scope, key.into()) == Some(true) { + Ok(()) + } else { + Err(format!("failed to remove global `{name}`")) + } +} diff --git a/codex-rs/core/tests/suite/code_mode.rs b/codex-rs/core/tests/suite/code_mode.rs index af94252c02..3bcb37e7b2 100644 --- a/codex-rs/core/tests/suite/code_mode.rs +++ b/codex-rs/core/tests/suite/code_mode.rs @@ -2371,7 +2371,6 @@ text(JSON.stringify(Object.getOwnPropertyNames(globalThis).sort())); "Array", "ArrayBuffer", "AsyncDisposableStack", - "Atomics", "BigInt", "BigInt64Array", "BigUint64Array", @@ -2406,7 +2405,6 @@ text(JSON.stringify(Object.getOwnPropertyNames(globalThis).sort())); "Reflect", "RegExp", "Set", - "SharedArrayBuffer", "String", "SuppressedError", "Symbol", @@ -2421,7 +2419,6 @@ text(JSON.stringify(Object.getOwnPropertyNames(globalThis).sort())); "WeakMap", "WeakRef", "WeakSet", - "WebAssembly", "__codexContentItems", "add_content", "decodeURI",