Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim session previously uses Smart Approval mode
-
DeliveryDeliver prompt injection via untrusted content
-
ExploitInvoke tool annotated readOnlyHint:true
-
ExecutionPermissionInspector::inspect skips Manual Approval prompt
-
ImpactTool runs without user consent
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a specific stateful sequence, not a default-config remote attack: (1) the goose session must have previously operated in Smart Approval mode, which applies/persists tool annotations; (2) the mode is then changed via update_goose_mode to Manual Approval, which fails to clear those persisted read-only annotations; and (3) the attacker must achieve prompt injection to invoke tools annotated readOnlyHint:true, which PermissionInspector::inspect then executes without prompting. Limiting factors: only tools carrying a read-only annotation are affected, the victim must have used Smart Approval earlier in the session, and the attacker needs a prompt-injection channel - there is no direct unauthenticated code path against a fresh default Manual Approval session. Affected versions are goose 1.28.0 up to (not including) 1.44.0. |
| Impact | This is a genuine but low-severity authorization logic flaw, and the signals are internally consistent rather than conflicting. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N) scores only 2.3: although network-reachable and requiring no privileges, exploitation carries a present attack requirement (AT:P) - the session must have previously entered Smart Approval mode - plus passive user interaction (UI:P), and impact is limited to low confidentiality/integrity with no availability effect. No EPSS probability was supplied, the CVE is NOT in CISA KEV, and no public proof-of-concept was provided, so there is no public exploit identified at time of analysis. The practical danger is amplified by the accompanying fix showing that at least one powerful tool (execute_bash) had been mislabeled with readOnlyHint:true, meaning the 'read-only' set that bypasses prompting could include non-trivial tools; however, exploitation still depends on an attacker-controlled prompt-injection path and a prior Smart Approval session, which keeps real-world risk low. Net: patch on a normal cadence - this is a defense-in-depth/approval-integrity bug in a developer AI agent, not an urgent widespread-exploitation priority. |
| Exploit ScenarioDerived | A user runs goose, uses Smart Approval mode (which persists read-only tool annotations), then switches to Manual Approval mode expecting every tool call to be prompted. An attacker who can inject a prompt - e.g. via untrusted file contents, a web page, or MCP data the agent ingests - issues calls to tools annotated readOnlyHint:true, which execute silently without the Manual Approval prompt. No public exploit code is known, but the bug is reachable over the network via prompt injection and requires no special attacker privileges. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
An authorization logic flaw in the goose AI agent framework affects versions 1.28.0 through 1.43.x and lets tools annotated readOnlyHint: true run without user approval even after the session has been switched to Manual Approval mode. The bypass is stateful rather than a default-configuration remote attack: a session must previously have run in Smart Approval mode, which persists read-only tool annotations, and update_goose_mode subsequently fails to clear them, so PermissionInspector::inspect skips its approval prompt when a prompt-injected call invokes one of those annotated tools. Successful exploitation yields low confidentiality and integrity impact with no availability impact, requires user interaction (the victim must process injected content in an agent session that earlier used Smart Approval), and no public exploit code was identified at time of analysis; per the supplied CVSS vector this is a network-reachable, unauthenticated-vector issue but with high attack complexity and a required user-interaction component, so real-world risk is low.
RemediationAI
Vendor-released patch: goose 1.44.0 (release tag https://github.com/aaif-goose/goose/releases/tag/v1.44.0), delivered through commit b0f4e2a0f1a5507aa0a0fbe73d0b5c77a3e86845 and pull request https://github.com/aaif-goose/goose/pull/10528; upgrade all goose installations, embedded agents, and IDE/editor integrations pinned to any version in the 1.28.0 to 1.43.x range to 1.44.0 or later, and refresh any vendored copy of the crates/goose source. Where immediate upgrade is not possible, the practical compensating control is to never transition an existing session from Smart Approval to Manual Approval: switching modes in a long-lived session leaves persisted read-only annotations in place and re-opens the bypass, so operators should start a fresh session (or restart the process, which discards in-memory and session-scoped Smart Approval permission state) after changing modes, and treat Manual Approval as trustworthy only for sessions that never used Smart Approval. Disabling Smart Approval entirely removes the precondition but loses annotation-based auto-approval and increases prompt fatigue, which itself raises the risk of users rubber-stamping approvals; a narrower alternative is to constrain or block the prompt-injection channel (for example by not feeding untrusted web, file, or tool output directly into agent context) and to audit which installed extensions declare readOnlyHint: true, since those are the only tools weaponizable through this flaw. There is no indication that configuration flags alone disable annotation-based approval, so patching remains the only complete fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
goose is a Rust-based AI agent CLI/desktop framework (repository aaif-goose/goose) that mediates model-initiated tool calls through a permission layer. Two approval modes are relevant: GooseMode::SmartApprove, which derives per-tool permissions from MCP-style tool annotations (read_only_hint, destructive_hint, idempotent_hint, open_world_hint) via ToolInspectionManager::apply_tool_annotations and persists them in the PermissionManager; and Manual Approval, in which every non-read-only tool should require explicit user confirmation. The root cause is CWE-863 (Incorrect Authorization): the code path that changes modes (update_goose_mode) never clears the Smart Approval-era SmartApprove permission entries, and PermissionInspector::inspect at crates/goose/src/permission/permission_inspector.rs treats a persisted read-only annotation as sufficient grounds to execute without prompting. Because annotations are attached to tools and can originate from extension or prompt-influenced metadata, a tool advertising readOnlyHint: true becomes a persistent, mode-independent execution channel. The upstream fix relocates the apply_tool_annotations call out of the agent's general tool-listing path and into the Smart-Approve-specific reply preparation (crates/goose/src/agents/reply_parts.rs), so annotations are only honored while Smart Approval is actually selected, and it re-labels the code-execution tool (formerly 'Get function details' with read_only true) as 'Execute Bash' with read_only_hint false, destructive_hint true, idempotent_hint false and open_world_hint true, with a regression test asserting those values.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
AV:N via prompt injection and AC:H because exploitation needs the session's prior Smart Approval state; PR:N but UI:R since the user must have interacted with approval modes; impact limited to read-only-annotated tools.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
goose from 1.28.0 before 1.44.0 contains an authorization bypass vulnerability that allows tools to run without user approval in Manual Approval mode because persisted read-only annotations are never cleared by update_goose_mode. After a session uses Smart Approval mode, prompt-injected calls to tools annotated readOnlyHint: true execute without prompting, bypassing the user's selected approval mode in PermissionInspector::inspect.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-97884
GHSA-8h69-7j5q-pwfc
NVD
CVE.org
EPSS
Exploit-DB