Skip to content
Skip to main contentWhere does your team stand on AI adoption?
CONTACT SALESSTART BUILDING

ACL testing and solutions to common issues

Whether you're setting up ACLs for the first time or debugging an existing configuration, this document provides practical solutions, testing strategies, and solutions to common issues.

Prerequisites

To get the most out of this document, make sure you're familiar with Access Control List (ACL) basics.

Test your ACL configuration

Follow this systematic approach to verify your ACL policies work correctly and provide clear feedback to users:

  1. Start with permissive rules. Begin with broad allow rules.
  2. Add specific restrictions. Layer on deny rules for sensitive areas.
  3. Test different scenarios. Try accessing files as different user types.
  4. Verify error messages. Ensure your failMessage values are helpful.

Common scenarios to test include:

  • ✅ that users can access files they should have access to
  • ❌ that sensitive files properly protected
  • 👥 that team-based restrictions work as expected
  • 🔄 that deny rules properly override allow rules
  • 📝 that error messages clear and actionable

The ACL system is automatically integrated into all file operations in the code generation system:

  • readFile() checks read permissions.
  • writeFile() checks write permissions.
  • deleteFile() checks write permissions.
  • fileExists() checks read permissions.
  • listDir() checks list permissions.
  • stat() checks read permissions.

1. Use deny-first design

Structure policies with specific deny rules to override broader allow rules:

json{ "entries": [ { "action": "allow", "resource": "/**", "permissions": ["read", "write"] }, { "action": "deny", "resource": "/secrets/**", "permissions": ["read", "write"], "failMessage": "Secret files are protected" } ] }

2. Provide clear error messages

Always include a helpful failMessage for deny rules:

json{ "action": "deny", "resource": "/production/**", "permissions": ["write"], "failMessage": "Production files require manual review. Please submit changes through the standard deployment process." }

3. Use Specific Resource Patterns

Be as specific as possible to avoid unintended access restrictions:

json{ "action": "deny", "resource": "/src/config/**/*.json", "permissions": ["write"], "failMessage": "JSON configuration files cannot be automatically modified" }

4. Separate permissions by operation

Use different permissions for different use cases:

json{ "entries": [ { "action": "allow", "resource": "/logs/**", "permissions": ["read", "list"] }, { "action": "allow", "resource": "/temp/**", "permissions": ["read", "write", "list"] }, { "action": "allow", "resource": "/public/**", "permissions": ["read", "list"] } ] }

5. Document your policies

Add comments to explain complex rules:

json{ "entries": [ { "action": "allow", "resource": "/src/**", "permissions": ["read", "write"], "principals": ["developer"], "comment": "Developers can modify all source code except production configs" }, { "action": "deny", "resource": "/src/config/production.json", "permissions": ["write"], "principals": ["developer"], "failMessage": "Production config requires admin approval" } ] }

Solutions to common issues

This section offers potential solutions to the most frequently encountered ACL configuration issues.

Access denied unexpectedly

  • Check if a deny rule is taking precedence over an allow rule.
  • Verify the resource pattern matches your file path exactly.
  • Make sure the permission type matches your operation.
  • Remember that patterns are case-sensitive.

Glob patterns not matching

  • Resource patterns use forward slashes (/) even on Windows.
  • Patterns are case-sensitive.
  • Test your patterns using online tools like globster.xyz.

Custom error messages not showing

  • failMessage only works on deny rules.
  • Verify the deny rule is actually the one matching your request.

List operations failing

  • Directory listing requires list permission, not read.
  • Make sure your policy includes list permissions for directories you need to browse.

Team or role restrictions not working

  • Verify users have the correct principals assigned.
  • Remember that users need at least one matching principal for a rule to apply.
  • Rules without principals apply to all users.
Was this article helpful?