General options 

All paths are relative to EXTCONF.nr_http_guard. Missing fields use the defaults below.

Mode and addresses 

schemaVersion
Type
integer
Default
1

Only schema version 1 is accepted.

mode
Type
string
Default
'enforce'

enforce controls the transport and blocks denied requests. observe evaluates and reports decisions but does not block additional requests or provide verified transport binding. disabled disables the additional protection. The mode never changes automatically on error. Existing Core or Vault checks remain effective in their respective adapter.

deniedCidrs
Type
list<string>
Default
[]

Additional operator restrictions for IPv4 or IPv6. These networks remain denied even with a valid endpoint profile. An empty value does not remove built-in restrictions. IPv4-mapped IPv6 CIDRs are not accepted; configure the corresponding IPv4 CIDR instead.

endpoints
Type
map<string, array>
Default
[]

At most 128 named profiles. All profile fields are documented in Endpoint profiles.

Resolver 

resolver.staticHosts
Type
map<string, list<string>>
Default
[]

Exact canonical hostnames with complete, non-empty IP lists. Wildcards, IP hosts as keys and operating system search domains are forbidden. Static responses pass the same address and endpoint checks as DNS responses. A static entry grants no permission by itself.

resolver.cacheTtlSeconds
Type
integer
Default
5

Range: 0 to 5 seconds. Zero disables DNS memoization. Entries never exceed the smallest remaining TTL in the complete response and CNAME chain. Negative or incomplete responses are not cached as positive results.

resolver.cacheMaxHosts
Type
integer
Default
32

Range: 1 to 1024. Maximum positive host entries per resolver instance. When the cache is full, its oldest entry is evicted.

resolver.maxAddresses
Type
integer
Default
64

Range: 1 to 64. Larger responses are rejected in full rather than truncated to their first permitted candidates.

resolver.maxCnameHops
Type
integer
Default
8

Range: 0 to 8. Cycles and longer chains are rejected. Zero prohibits following a CNAME redirect.

Redirects and TLS 

redirects.max
Type
integer
Default
5

Range: 0 to 10. Upper limit for supported redirect paths. Endpoint profiles may additionally forbid redirects entirely. PSR-18 sendRequest() never follows redirects, regardless of this value.

tls.requireVerification
Type
boolean
Default
false

With true, callers cannot disable TLS verification. The default false does not disable verification itself: the transport normally uses verify=true, but permits an explicitly configured verify=false SDK option. doctor warns when policy does not require verification. For internal HTTPS targets, use an appropriate CA bundle and requireVerification=true.

Logging 

logging.allowedSampleRate
Type
integer|float
Default
0

A finite number from 0 to 1. Fraction of allowed decisions to log; the default is zero percent. Denial counters remain available even when log events are rate limited.

logging.hostMode
Type
string
Default
'hash'

hash pseudonymizes the host using the configured HMAC key. Without a key, the host is omitted. plain logs the canonical host in clear text and is an explicit operator choice. Paths, queries and complete URLs are omitted in both modes.

logging.hostHmacKeyEnv
Type
string|null
Default
null

Name of a real process environment variable containing the HMAC key. The name uses ASCII letters, digits and underscores, starts with a letter or underscore, and contains at most 128 characters. The key itself must not be part of a policy array or request.

logging.denyRateLimitPerMinute
Type
integer
Default
60

Range: 1 to 10000. Rate limits denial log events, never policy enforcement. The event format is documented in Decision logs.