feat(cli): deprecate --allowed-tools and excludeTools in favor of policy engine#18508
feat(cli): deprecate --allowed-tools and excludeTools in favor of policy engine#18508Abhijit-2592 merged 6 commits intomainfrom
Conversation
Summary of ChangesHello @Abhijit-2592, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request initiates the deprecation process for the Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
The pull request correctly introduces deprecation notices for the --allowed-tools CLI flag and tools.allowed configuration, guiding users toward the Policy Engine. It also implements a mechanism to hide denied tools from the LLM's discovery process by aggregating exclusions from the Policy Engine. However, there are two significant issues: the new getExcludedTools method in the PolicyEngine does not account for rule modes, which can lead to incorrect tool discovery filtering, and the CLI configuration now clears the exclude list before passing it to the Policy Engine, which removes the execution-level blocking for those tools. Addressing these will ensure that the deprecation phase remains secure and provides a consistent user experience.
|
Size Change: +3.34 kB (+0.01%) Total Size: 24.3 MB
ℹ️ View Unchanged
|
0d74d22 to
ea4dc1d
Compare
6d2fc32 to
d9349f6
Compare
ebb4f9f to
ff6eaf3
Compare
allenhutchison
left a comment
There was a problem hiding this comment.
This looks pretty good to me but there is this question about allowed tools.
| | `--experimental-acp` | - | boolean | - | Start in ACP (Agent Code Pilot) mode. **Experimental feature.** | | ||
| | `--experimental-zed-integration` | - | boolean | - | Run in Zed editor integration mode. **Experimental feature.** | | ||
| | `--allowed-mcp-server-names` | - | array | - | Allowed MCP server names (comma-separated or multiple flags) | | ||
| | `--allowed-tools` | - | array | - | **Deprecated.** Use the [Policy Engine](../core/policy-engine.md) instead. Tools that are allowed to run without confirmation (comma-separated or multiple flags) | |
There was a problem hiding this comment.
So in chatting with @NTaylorMullen I think he wants to keep allowed-tools have you synced with him on this?
- Implement PolicyEngine.getExcludedTools() to expose effectively denied tools. - Update Config.getExcludeTools() to centrally aggregate exclusions from system defaults, extensions, and the Policy Engine. - Deprecate tools.exclude in settings.json with a single startup warning in the CLI. - Mark excludeTools as deprecated in Core Config parameters and class. - Ensure backward compatibility by maintaining legacy exclude processing in Core's createPolicyEngineConfig while bypassing it in the CLI to avoid redundancy. - Add comprehensive tests for unified tool exclusion logic.
Deprecates the --allowed-tools CLI flag and tools.allowed configuration option. Emits a runtime warning when used and guides users to the Policy Engine for tool permission management.
- Update PolicyEngine.getExcludedTools() to filter rules based on the current approval mode. - Pass merged excluded tools to createPolicyEngineConfig in the CLI to ensure execution-level blocking via DENY rules. - Update tests to reflect that excluded tools are now passed to the Policy Engine configuration.
…rd rules Updates the PolicyEngine to correctly handle global rules (rules without a specific tool name) and ensure wildcard rules cover matching tools. Also corrects the handling of ASK_USER tools in non-interactive mode.
3c7c5cc to
88cb82b
Compare
…ini/gemini-cli (#37) * fix(cli): resolve double rendering in shpool and address vscode lint warnings (google-gemini#18704) * feat(plan): document and validate Plan Mode policy overrides (google-gemini#18825) * Fix pressing any key to exit select mode. (google-gemini#18421) * fix(cli): update F12 behavior to only open drawer if browser fails (google-gemini#18829) * feat(plan): allow skills to be enabled in plan mode (google-gemini#18817) Co-authored-by: Jerop Kipruto <jerop@google.com> * docs(plan): add documentation for plan mode tools (google-gemini#18827) * Remove experimental note in extension settings docs (google-gemini#18822) * Update prompt and grep tool definition to limit context size (google-gemini#18780) * docs(plan): add `ask_user` tool documentation (google-gemini#18830) * Revert unintended credentials exposure (google-gemini#18840) * feat(core): update internal utility models to Gemini 3 (google-gemini#18773) * feat(a2a): add value-resolver for auth credential resolution (google-gemini#18653) * Removed getPlainTextLength (google-gemini#18848) * More grep prompt tweaks (google-gemini#18846) * refactor(cli): Reactive useSettingsStore hook (google-gemini#14915) * fix(mcp): Ensure that stdio MCP server execution has the `GEMINI_CLI=1` env variable populated. (google-gemini#18832) * fix(core): improve headless mode detection for flags and query args (google-gemini#18855) * refactor(cli): simplify UI and remove legacy inline tool confirmation logic (google-gemini#18566) * feat(cli): deprecate --allowed-tools and excludeTools in favor of policy engine (google-gemini#18508) * fix(workflows): improve maintainer detection for automated PR actions (google-gemini#18869) * refactor(cli): consolidate useToolScheduler and delete legacy implementation (google-gemini#18567) * Update changelog for v0.28.0 and v0.29.0-preview0 (google-gemini#18819) * fix(core): ensure sub-agents are registered regardless of tools.allowed (google-gemini#18870) --------- Co-authored-by: Brad Dux <959674+braddux@users.noreply.github.com> Co-authored-by: Jerop Kipruto <jerop@google.com> Co-authored-by: Jacob Richman <jacob314@gmail.com> Co-authored-by: Sandy Tao <sandytao520@icloud.com> Co-authored-by: Adib234 <30782825+Adib234@users.noreply.github.com> Co-authored-by: christine betts <chrstn@uw.edu> Co-authored-by: Christian Gunderman <gundermanc@gmail.com> Co-authored-by: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Co-authored-by: Dev Randalpura <devrandalpura@google.com> Co-authored-by: Pyush Sinha <pyushsinha20@gmail.com> Co-authored-by: Richie Foreman <richie.foreman@gmail.com> Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com> Co-authored-by: Abhi <43648792+abhipatel12@users.noreply.github.com> Co-authored-by: Abhijit Balaji <abhijitbalaji@google.com> Co-authored-by: Bryan Morgan <bryanmorgan@google.com> Co-authored-by: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Co-authored-by: matt korwel <matt.korwel@gmail.com>

Summary
Deprecates the
--allowed-toolsCLI flag,tools.allowed, andtools.excludeconfiguration options in favor of the Policy Engine, unifying tool exclusion logic.Details
This PR implements a two-phase deprecation plan for legacy tool permission flags, guiding users toward the Policy Engine.
1. Deprecate
--allowed-tools/tools.allowed--allowed-toolsto indicate deprecation.gemini.tsxifallowedToolsis used via CLI args or settings.@deprecatedtags toallowedToolsinConfigproperties.2. Deprecate
tools.exclude& Unify Exclusion LogicPolicyEngine.getExcludedTools()to expose effectively denied tools.Config.getExcludeTools()to centrally aggregate exclusions from:tools.excludeusage insettings.json.excludeToolsas deprecated inConfigparameters and class.createPolicyEngineConfigwhile refactoring CLI usage to avoid redundancy.Related Issues
Partial solution for #11302 as this only deprecates.
How to Validate
gemini --allowed-tools="ShellTool"."tools": { "exclude": ["some_tool"] }tosettings.json.gemini.tools.excludedeprecation.geminiwithout these flags/settings.Pre-Merge Checklist