Cloudflare DNS plugin

The Cloudflare DNS plugin lets a Vaubaan Gateway mission use Cloudflare DNS without handing the agent a credential. DNS zones and records on Cloudflare : records, BIND import / export, zone settings, DNSSEC and cache purge — one resource per zone.

One account is one Cloudflare API token; one resource is one DNS zone (a domain). A mission touches only the zones it was given. DNS has no environment: ordinary records, apex / MX / NS changes, deletions, imports and zone settings are separate permissions instead.

Permissions

Each permission is a named risk of the plugin's catalog: a mission holds an explicit list of them, never "all". The severity is computed from the permission's six axes (undo, blast radius, data, cost, visible to, lasts); nothing is decided from it.

PermissionWhat it allowsSeverityWhy it is a risk
cloudflare-dns.read-zone-metadataRead zone and account metadatalowInventory of zones, status, nameservers, plan, zone settings and DNSSEC posture. Metadata only, no secrets, no record values. Note that `zone[**].R` is recursive : reading records needs this permission too, so a mission that reads records holds both.
cloudflare-dns.read-recordsRead DNS records (IPs, CNAMEs, MX, TXT values)lowExposes the network topology (server IPs, MX relays, SPF/DKIM/DMARC configuration, ACME challenges). Reconnaissance surface for an attacker.
cloudflare-dns.export-zone-fileExport the whole zone as a BIND file (all records in one dump)lowAtomic export of every record in BIND format — the complete DNS topology in a single request. Distinct from read-records (paginated) because the export is a one-call bulk exfiltration vector.
cloudflare-dns.record-writeCreate / update a DNS recordmediumPosture shift on a DNS record. A changed A/CNAME redirects traffic ; a changed TXT invalidates SPF/DKIM (mail) or ACME (TLS). Costly to revert because the previous value must be known (no DNS versioning). Public by nature. Touched by every record write, including the critical ones and the deletions, which also need their own permission.
cloudflare-dns.critical-record-writeChange an apex, wildcard, MX or NS recordhighThe record governs the whole domain rather than one host : the apex (`example.com`, `@`) or the wildcard at the apex redirects the main site and every undefined subdomain ; MX reroutes all incoming mail ; NS delegates a subtree to another nameserver. Emitted next to the ordinary record write, so a mission holds it distinctly. When the arguments do not name the record's type and name, the write counts as critical.
cloudflare-dns.record-deleteDelete a DNS recordmediumRemoves a record ; the host, mail route or validation token it served stops resolving immediately. Costly to revert : the previous value is gone and must be recovered from elsewhere. Emitted as a verb leaf so a mission can allow edits without allowing deletions.
cloudflare-dns.import-recordsBulk import DNS records from a BIND zone filehighA BIND import creates or overwrites potentially hundreds of records in one call, apex and MX included. Higher blast than a single record write ; non-atomic (partial import on error). Rate-limited upstream.
cloudflare-dns.zone-settings-writeEdit zone settings (SSL mode, minimum TLS, cache level…)highModifies the security posture of the zone. Lowering the minimum TLS version re-enables known weaknesses ; switching SSL from Full (strict) to Flexible opens the origin leg to interception.
cloudflare-dns.dnssec-writeEnable / disable DNSSEC on a zonehighToggling DNSSEC without the matching DS record at the registrar breaks resolution (SERVFAIL on validating resolvers). Zone-wide security posture shift.
cloudflare-dns.cache-purgePurge the CDN cache (everything, by URL, tag, host or prefix)mediumA purge-everything sends every request to the origin — a self-inflicted load spike on a busy site. Reversible (the cache rebuilds) but with an immediate performance cost.
cloudflare-dns.zone-deleteDelete a whole DNS zone (the domain stops resolving)criticalDeletes the zone. The domain stops resolving at once ; every record, setting and the DNSSEC configuration are lost. Irreversible in practice — the zone must be recreated and every record reimported. Listed in no preset : a mission that needs it enumerates it explicitly. The pattern ends on the zone ident (`zone[*]`, not `zone[**]`) : a recursive wildcard would make every record or settings write need this irreversible permission.
cloudflare-dns.uncategorized-writeUncategorized Cloudflare DNS writehigh (the catch-all: touched only by a call no other permission covers)Catch-all for writes without a dedicated entry. Seen in production, it means a tool classifies to a slice no entry covers : add the entry.

Presets

A preset pre-fills the permissions of a mission for one account, with a limit per period, a rate and whether each permission runs freely or asks the mission creator first. The person creating the mission adjusts it; the mission stores the explicit list.

Read-only

read-only — Zone metadata, settings, DNSSEC posture and record values of the selected zones. No export, no write.

PermissionWhat it allowsLimit per periodRateRuns
cloudflare-dns.read-zone-metadataRead zone and account metadata2000120 per minuteruns freely
cloudflare-dns.read-recordsRead DNS records (IPs, CNAMEs, MX, TXT values)2000120 per minuteruns freely

DNS operator

dns-operator — Read, then create and update ordinary subdomain records and purge the cache. No apex / MX / NS change, no deletion, no import, no zone settings.

PermissionWhat it allowsLimit per periodRateRuns
cloudflare-dns.read-zone-metadataRead zone and account metadata2000120 per minuteruns freely
cloudflare-dns.read-recordsRead DNS records (IPs, CNAMEs, MX, TXT values)2000120 per minuteruns freely
cloudflare-dns.record-writeCreate / update a DNS record50030 per minuteruns freely
cloudflare-dns.cache-purgePurge the CDN cache (everything, by URL, tag, host or prefix)5010 per minuteruns freely

Zone admin

zone-admin — Everything on the selected zones except deleting them; record deletion, apex / MX / NS changes, imports, zone settings and DNSSEC ask first.

PermissionWhat it allowsLimit per periodRateRuns
cloudflare-dns.read-zone-metadataRead zone and account metadata5000120 per minuteruns freely
cloudflare-dns.read-recordsRead DNS records (IPs, CNAMEs, MX, TXT values)5000120 per minuteruns freely
cloudflare-dns.export-zone-fileExport the whole zone as a BIND file (all records in one dump)5010 per minuteruns freely
cloudflare-dns.record-writeCreate / update a DNS record100060 per minuteruns freely
cloudflare-dns.critical-record-writeChange an apex, wildcard, MX or NS record5010 per minuteask me first
cloudflare-dns.record-deleteDelete a DNS record20030 per minuteask me first
cloudflare-dns.import-recordsBulk import DNS records from a BIND zone file103 per minuteask me first
cloudflare-dns.zone-settings-writeEdit zone settings (SSL mode, minimum TLS, cache level…)5010 per minuteask me first
cloudflare-dns.dnssec-writeEnable / disable DNSSEC on a zone105 per minuteask me first
cloudflare-dns.cache-purgePurge the CDN cache (everything, by URL, tag, host or prefix)10020 per minuteruns freely

Tools

ToolWhat it does
cloudflare_dns__list_zonesList DNS zones
cloudflare_dns__get_zoneRead a DNS zone
cloudflare_dns__list_recordsList DNS records
cloudflare_dns__get_recordRead a DNS record
cloudflare_dns__export_recordsExport the DNS records of a zone
cloudflare_dns__get_zone_settingsRead the settings of a zone
cloudflare_dns__get_dnssecRead the DNSSEC status
cloudflare_dns__create_recordCreate a DNS record
cloudflare_dns__update_recordChange a DNS record
cloudflare_dns__delete_recordDelete a DNS record
cloudflare_dns__import_recordsImport DNS records in bulk
cloudflare_dns__edit_zone_settingsChange the settings of a zone
cloudflare_dns__purge_cachePurge the cache of a zone
cloudflare_dns__edit_dnssecTurn DNSSEC on or off
cloudflare_dns__delete_zoneDelete a DNS zone

Health

Health: not enough reports yet. A plugin version is deemed validated by the community with at least 200 reports and 90 % of them successful, over the last 90 days, as reported by the instances whose operators turned community telemetry on. It is a community signal, not a security guarantee.

Last changed 2026-10-16. This page as Markdown: /plugins/cloudflare-dns.md