feat(permissions): warn that Warp's command_denylist replaces the built-in one - #2625
Merged
Merged
Conversation
…lt-in one Warp treats a written command_denylist as the whole denylist: it replaces the built-in default list covering rm, curl, wget, eval, ssh, shells and other risky patterns. A single authored deny rule therefore drops those protections silently, so log a warning whenever a non-empty denylist is emitted.
The canonical permissions file is permissions.jsonc; permissions.json is only the legacy name. Also move the upstream doc URL into the class comment and match the surrounding logger guard style.
This was referenced Aug 7, 2026
Merged
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warp's docs state: "Setting
command_denylistreplaces the built-in default denylist, which coversrm,curl,wget,eval,ssh, shells, and other risky command patterns." (https://docs.warp.dev/cli/permissions-and-profiles/)rulesync generates that array wholesale from the canonical
denyrules, so a single authored deny rule silently removed Warp's built-in protections.WarpPermissions.fromRulesyncPermissionsnow logs a warning whenever it writes a non-empty denylist, naming the built-in patterns and telling the user to add equivalents if they want to keep them. Tests cover both the warning and its absence when onlyallowrules are authored;docs/reference/file-formats.mddocuments the replacement semantics.Not in scope here: creating a
warpclitarget remains design-gated per the disposition comment on this issue.Part of #2598
🤖 Generated with Claude Code