fix(permissions): scope smart approval by request - #10457
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 05ee410a1b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
goose/crates/goose/src/permission/permission_inspector.rs
Lines 181 to 184 in 005406a
When a user already has a smart_approve.always_allow entry from an older release, this branch does not send the request to the new per-request judge because get_smart_approve_permission(tool_name) is Some(...), but the entry is also no longer trusted as an allow and the code falls through to RequireApproval. That means SmartApprove becomes permanently equivalent to Approve for those tools until the user manually edits permission.yaml or creates a user-level rule, even for clearly read-only calls; treating legacy AlwaysAllow as absent or removing it would let the request be reclassified safely.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
* origin/main: (24 commits) fix(session): create inventory tables atomically with schema version (#10586) fix(providers): rewrite oneOf to anyOf in tool schemas for OpenAI-compatible backends (#10571) fix(evals): report cache-aware Harbor costs (#10430) fix(acp): allow custom model as default for non-local providers (#10438) fix(config): require absolute goose path roots (#10454) chore(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.2 (#10541) fix(permissions): scope smart approval by request (#10457) fix(summon): preserve fixed subrecipe values (#10452) chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /documentation (#10506) fix(flatpak): bundle git so hermit can clone its package registry (#10511) feat(hooks): pass working_dir to the Stop hook context (#10296) chore(deps): bump actions/setup-java from 5.5.0 to 5.6.0 (#10540) chore(deps): bump actions/setup-node from 6 to 7 (#10539) chore(deps): bump EmbarkStudios/cargo-deny-action from 2.0.20 to 2.1.1 (#10542) chore(deps): bump gradle/actions/setup-gradle from 4.4.3 to 6.2.0 (#10543) Add declarative Sakana AI provider for the OpenAI-compatible Fugu API (#10357) fix(developer): expose AGENT_SESSION_ID to shell commands (#10428) Clean up stale documentation audit findings (#10114) Restore model interactions viewer (#10205) fix(acp): forward image content chunks to client during live session (#10485) ... # Conflicts: # crates/goose/src/session/session_manager.rs
Summary
Validation
cargo fmt --all -- --checkcargo test -p goose permission::cargo build -p goosecargo clippy -p goose --all-targets -- -D warningsgit diff --checkThis finding was discovered by Project Loupe.