From efc020d224a96d24a7d8848a7744256ab5a7755e Mon Sep 17 00:00:00 2001 From: jif Date: Thu, 27 Aug 2026 15:41:58 +0000 Subject: [PATCH] Instrument stdin review size checks (#41189) ## What changed Emit a `codex.unified_exec.stdin_review.size_check` counter when reviewing input for an escalated terminal. Tag each check with: - the result: `formatter_truncated`, `over_limit`, or `within_limit`; - whether the submitted input is control-only or text. Preserve the existing rejection behavior for truncated or oversized reviews. GitOrigin-RevId: 6556beb2121cfaf91d572a26822b50442391c95f --- .../core/src/unified_exec/process_manager.rs | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/codex-rs/core/src/unified_exec/process_manager.rs b/codex-rs/core/src/unified_exec/process_manager.rs index 1424239d50..5c34c69f36 100644 --- a/codex-rs/core/src/unified_exec/process_manager.rs +++ b/codex-rs/core/src/unified_exec/process_manager.rs @@ -807,9 +807,25 @@ impl UnifiedExecProcessManager { .map_err(|err| UnifiedExecError::StdinApproval(ToolError::Rejected(err.to_string())))?; // Bound the entire serialized action plus its reason, including JSON // escaping. Reject, never execute an unreviewed tail. - if reviewed.truncated - || reviewed.text.len().saturating_add(approval_reason.len()) > 8_000 - { + let oversized = reviewed.text.len().saturating_add(approval_reason.len()) > 8_000; + let size_check_result = if reviewed.truncated { + "formatter_truncated" + } else if oversized { + "over_limit" + } else { + "within_limit" + }; + let input_kind = if request.input.chars().all(char::is_control) { + "control" + } else { + "text" + }; + context.step_context.session_telemetry.counter( + "codex.unified_exec.stdin_review.size_check", + /*inc*/ 1, + &[("result", size_check_result), ("input_kind", input_kind)], + ); + if reviewed.truncated || oversized { return Err(UnifiedExecError::StdinApproval(ToolError::Rejected( "terminal input and permission details are too large to review safely; use a smaller input or start a new terminal with fewer grants".to_string(), )));