// GRANT-H3 // // Grant: src=['*'] dst=['*'] // // Expected: Error (HTTP 400) — ip and app can not both be empty { "test_id": "GRANT-H3", "description": "", "timestamp": "2026-02-23T00:36:53Z", "error": true, "input": { "policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h3.json", "full_policy": { "groups": { "group:admins": ["kratail2tid@passkey"], "group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"], "group:monitors": ["monitorpasskeykradalby@passkey"], "group:empty": [] }, "tagOwners": { "tag:server": ["kratail2tid@passkey"], "tag:prod": ["kratail2tid@passkey"], "tag:client": ["kratail2tid@passkey"], "tag:router": ["kratail2tid@passkey"], "tag:exit": ["kratail2tid@passkey"] }, "hosts": { "webserver": "100.108.74.26", "prodbox": "100.103.8.15", "internal": "10.0.0.0/8" }, "autoApprovers": { "routes": { "10.33.0.0/16": ["tag:router"], "0.0.0.0/0": ["tag:exit"], "::/0": ["tag:exit"] } }, "grants": [ { "src": ["*"], "dst": ["*"], "ip": [] } ] }, "grants_section": [{ "src": ["*"], "dst": ["*"], "ip": [] }], "api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl", "api_method": "POST", "api_response_code": 400, "api_response_body": { "message": "ip and app can not both be empty" } } }