Chapter 04 · Cloudflare Deploy
Subchapter 4.24
references/api-shield/gotchas.mdMarkdown5 KBView on GitHub
Cause: Classic rules still active, conflicting with new system Solution:
Cause: Schema too restrictive, missing fields, or incorrect types Solution:
Cause: JWKS mismatch with IdP, expired token, wrong header/cookie name, or clock skew Solution:
exp claim is validis_jwt_valid(http.request.jwt.payload["{config_id}"][0])Cause: Legitimate sequential access patterns, bulk operations, or sensitivity too high Solution:
Cause: Feature not enabled, insufficient traffic, or missing session identifiers Solution:
Cause: Insufficient traffic (<500 reqs/10d), non-2xx responses, Worker direct requests, or incorrect session ID config Solution: Ensure 500+ requests in 10 days, 2xx responses from edge (not Workers direct), configure session IDs correctly. ML updates daily.
Cause: Lookback window issues, non-unique session IDs, or model sensitivity Solution:
Cause: Query depth/size limits too restrictive, complex but legitimate queries Solution:
Cause: Configuration error, JWKS mismatch, or expired token Solution: Verify config matches IdP, update JWKS, check token expiration
Cause: Missing required fields, wrong data types, or spec mismatch Solution: Review schema against actual requests, ensure all required fields present, validate types match spec
Cause: Unknown endpoint or pattern mismatch Solution: Update schema with all endpoints, check path pattern matching
Cause: Certificate untrusted/expired or wrong CA Solution: Verify cert chain, check expiration, confirm correct CA uploaded
| Resource/Limit | Value | Notes |
|---|---|---|
| OpenAPI version | v3.0.x only | No external refs, must be valid |
| Schema operations | 10K (Enterprise) | Contact for higher limits |
| JWT validation sources | Headers/cookies only | No query params/body |
| Endpoint discovery | 500+ reqs/10d | Minimum for ML model |
| Path normalization | Automatic | /profile/238 → /profile/{var1} |
| Schema parameters | No content field | No object param validation |
| BOLA detection | 1000+ reqs/day/endpoint | Per-endpoint minimum |
| Session ID uniqueness | Required | BOLA/Sequence need unique IDs |
| GraphQL max depth | 1-50 | Default: 10 |
| GraphQL max size | 1KB-1MB | Default: 100KB |
| JWT claim nesting | 10 levels max | Use dot notation |
| mTLS CA certificates | 5 custom max | CF-managed unlimited |
| Schema upload size | 5MB max | Compressed OpenAPI spec |
| Volumetric abuse baseline | 7 days training | Initial ML period |
| Auth Posture refresh | Daily | Updated nightly |