From 5bab3608cf17f39242e79351a3458fa7682f0994 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Fri, 1 May 2026 18:52:08 -0700 Subject: [PATCH] Align TUI hook trust flow with current hash --- codex-rs/tui/src/app/background_requests.rs | 10 +++++----- codex-rs/tui/src/app/event_dispatch.rs | 4 ++-- codex-rs/tui/src/app_event.rs | 2 +- codex-rs/tui/src/bottom_pane/hooks_browser_view.rs | 5 ++--- ...tests__hooks_browser_untrusted_enabled_handler.snap | 7 ++++--- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/codex-rs/tui/src/app/background_requests.rs b/codex-rs/tui/src/app/background_requests.rs index 570847bd09..7343249934 100644 --- a/codex-rs/tui/src/app/background_requests.rs +++ b/codex-rs/tui/src/app/background_requests.rs @@ -368,13 +368,13 @@ impl App { &mut self, app_server: &AppServerSession, key: String, - trusted_hash: String, + current_hash: String, enable: bool, ) { let request_handle = app_server.request_handle(); let app_event_tx = self.app_event_tx.clone(); tokio::spawn(async move { - let result = write_hook_trust(request_handle, key, trusted_hash, enable) + let result = write_hook_trust(request_handle, key, current_hash, enable) .await .map(|_| ()) .map_err(|err| format!("Failed to trust hook: {err}")); @@ -868,7 +868,7 @@ pub(super) async fn write_hook_enabled( pub(super) async fn write_hook_trust( request_handle: AppServerRequestHandle, key: String, - trusted_hash: String, + current_hash: String, enable: bool, ) -> Result { let request_id = RequestId::String(format!("hooks-config-write-{}", Uuid::new_v4())); @@ -876,13 +876,13 @@ pub(super) async fn write_hook_trust( serde_json::json!({ key: { "enabled": true, - "trusted_hash": trusted_hash, + "trusted_hash": current_hash, } }) } else { serde_json::json!({ key: { - "trusted_hash": trusted_hash, + "trusted_hash": current_hash, } }) }; diff --git a/codex-rs/tui/src/app/event_dispatch.rs b/codex-rs/tui/src/app/event_dispatch.rs index 6b658fe819..35556dc117 100644 --- a/codex-rs/tui/src/app/event_dispatch.rs +++ b/codex-rs/tui/src/app/event_dispatch.rs @@ -1694,10 +1694,10 @@ impl App { } AppEvent::TrustHook { key, - trusted_hash, + current_hash, enable, } => { - self.trust_hook(app_server, key, trusted_hash, enable); + self.trust_hook(app_server, key, current_hash, enable); } AppEvent::HookEnabledSet { key, diff --git a/codex-rs/tui/src/app_event.rs b/codex-rs/tui/src/app_event.rs index 46a62bd0d0..d2cc30608c 100644 --- a/codex-rs/tui/src/app_event.rs +++ b/codex-rs/tui/src/app_event.rs @@ -752,7 +752,7 @@ pub(crate) enum AppEvent { /// Trust the current definition for a hook by stable hook key. TrustHook { key: String, - trusted_hash: String, + current_hash: String, enable: bool, }, diff --git a/codex-rs/tui/src/bottom_pane/hooks_browser_view.rs b/codex-rs/tui/src/bottom_pane/hooks_browser_view.rs index 84f47d1078..5c7a9aa6b3 100644 --- a/codex-rs/tui/src/bottom_pane/hooks_browser_view.rs +++ b/codex-rs/tui/src/bottom_pane/hooks_browser_view.rs @@ -922,7 +922,6 @@ mod tests { /*is_managed*/ false, /*display_order*/ 0, ); - untrusted_hook.trusted_hash = None; untrusted_hook.trust_status = HookTrustStatus::Untrusted; let view = HooksBrowserView::new( vec![untrusted_hook], @@ -1316,11 +1315,11 @@ mod tests { match rx.try_recv().expect("trust event") { AppEvent::TrustHook { key, - current_hash: trusted_hash, + current_hash: hash_to_trust, enable, } => { assert_eq!(key, "path:untrusted"); - assert_eq!(trusted_hash, current_hash); + assert_eq!(hash_to_trust, current_hash); assert!(enable); } other => panic!("expected hook trust event, got {other:?}"), diff --git a/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__hooks_browser_view__tests__hooks_browser_untrusted_enabled_handler.snap b/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__hooks_browser_view__tests__hooks_browser_untrusted_enabled_handler.snap index 76d99758dc..4fa01776f6 100644 --- a/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__hooks_browser_view__tests__hooks_browser_untrusted_enabled_handler.snap +++ b/codex-rs/tui/src/bottom_pane/snapshots/codex_tui__bottom_pane__hooks_browser_view__tests__hooks_browser_untrusted_enabled_handler.snap @@ -4,14 +4,15 @@ expression: "render_lines(&view, 112)" --- PreToolUse hooks - Turn hooks on or off. Your changes are saved automatically. + 1 hook needs review before it can run. - [ ] Hook 1 + [!] Hook 1 ยท new Event PreToolUse Matcher Bash Source User config - /tmp/hooks.json Command ~/bin/untrusted.sh Timeout 30s + Trust New hook - review required - Press space or enter to toggle; esc to go back + Press t to trust; esc to go back