From f167ca6908691a1987f30e3c680f774add9a68aa Mon Sep 17 00:00:00 2001 From: Jasper Date: Wed, 19 Aug 2026 15:34:00 +0000 Subject: [PATCH] fix(security): fail closed on malformed app visibility (#11341) Signed-off-by: Jasper Hugo --- crates/goose/src/agents/reply_parts.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/goose/src/agents/reply_parts.rs b/crates/goose/src/agents/reply_parts.rs index 331838140..a4ee0ff7b 100644 --- a/crates/goose/src/agents/reply_parts.rs +++ b/crates/goose/src/agents/reply_parts.rs @@ -795,7 +795,7 @@ pub fn is_tool_visible_to_app(tool: &Tool) -> bool { return true; }; let Some(arr) = visibility.as_array() else { - return true; + return false; }; arr.iter().any(|v| v.as_str() == Some("app")) } @@ -1757,6 +1757,12 @@ mod tests { assert!(!is_tool_visible_to_app(&tool)); } + #[test] + fn test_app_hidden_when_visibility_is_not_array() { + let tool = make_tool_with_meta(Some(serde_json::json!({"ui": {"visibility": "model"}}))); + assert!(!is_tool_visible_to_app(&tool)); + } + fn usage_with_stats(stats: Option) -> ProviderUsage { let mut usage = ProviderUsage::new("mock".to_string(), Usage::default()); usage.stats = stats;