# Claude Code v0.2.69 Changelog
Changes
7 itemsEnhanced Permission System #
- Added deny permissions support: The permission system now supports both
allowanddenyrules for tools, giving users more granular control over what tools can be used in their projects.
Usage example:
{
"permissions": {
"allow": ["Read", "Write"],
"deny": ["Bash", "WebFetch"]
}
}
Previously, only allow rules were supported. Now you can explicitly deny specific tools even if they might be allowed by other rules.
Improved Rule Management #
- New deny rules functionality: Added support for "always deny" rules alongside the existing "always allow" rules. This provides a more comprehensive permission model where certain tools can be permanently blocked.
- Rule source tracking: Permission rules now track their source (e.g., "projectSettings", "localSettings") and behavior type ("allow" or "deny"), making it easier to understand why a tool is allowed or denied.
Code Organization #
- Stream handling update: Switched from default stream import to using named
PassThroughimport, improving code clarity and tree-shaking capabilities.
- Process module update: Changed from default process import to named
cwdimport for better modularity.
New Utility Functions #
- Added
$j2function: A new string processing utility that splits text by newlines, processes each line, and rejoins them. This appears to be used for formatting multi-line content.
- Added
Hb5function: Retrieves all deny rules from the permission system, formatting them with their source and rule details.
- Added
Ab5function: Checks if a specific tool is denied by any rule, returning the matching deny rule if found.
Permission Rule Handling #
- Fixed rule removal logic: The
Pj2function (formerlyLj2) now correctly handles both allow and deny rules when removing permissions from project settings. Previously, it only supported removing "allow" rules.
- Fixed rule addition logic: The
Tj2function now properly handles both allow and deny rules when adding new permissions, instead of throwing an error for non-allow rules.
New Configuration Schema #
- The permission object schema (
Yb5) now includes bothallowanddenyarrays:
{
permissions: {
allow: ["Tool1", "Tool2"], // optional
deny: ["Tool3", "Tool4"] // optional
}
}
Constants #
- Added new constant
oy5 = 13(appears to be a configuration value) - Added new constant
ii5 = 3(appears to be a configuration value) - Removed constant
ci5 = 10
Breaking Changes
None identified. The changes maintain backward compatibility while extending functionality.
Migration Notes
Projects using the previous permission system will continue to work as before. The new deny rules are optional and only take effect when explicitly configured. Existing "allow-only" configurations remain valid.