Skip to content

DNSControl

v4.39.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

dns dnscontrol go iac

Summary

AI summary

Broad release touches Provider-specific changes, @TomOnTime, macOS and Linux, and @cafferata.

Changes in this release

Breaking Medium

REV() will switch from RFC2317 to RFC4183 in v5.0, a breaking change.

REV() will switch from RFC2317 to RFC4183 in v5.0, a breaking change.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Feature Medium

`dnscontrol init` verifies credentials, selects zones, and imports records.

`dnscontrol init` verifies credentials, selects zones, and imports records.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Feature Medium

New provider Netbird DNS Zone support added.

New provider Netbird DNS Zone support added.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Feature Medium

`dnscontrol init` now supported for ALIDNS, AZURE_DNS, BUNNY_DNS, CLOUDFLAREAPI, CNR, DIGITALOCEAN, GANDI_V5, GCLOUD, GCORE, HEDNS, HETZNER_V2, HOSTINGDE, HUAWEICLOUD, LOOPIA, LuaDNS, MYTHICBEASTS, and NAMECHEAP providers.

`dnscontrol init` now supported for ALIDNS, AZURE_DNS, BUNNY_DNS, CLOUDFLAREAPI, CNR, DIGITALOCEAN, GANDI_V5, GCLOUD, GCORE, HEDNS, HETZNER_V2, HOSTINGDE, HUAWEICLOUD, LOOPIA, LuaDNS, MYTHICBEASTS, and NAMECHEAP providers.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Feature Medium

README.md reorganized and CONTRIBUTING.md added for developer onboarding.

README.md reorganized and CONTRIBUTING.md added for developer onboarding.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Feature Medium

Automation reduces steps to add new providers.

Automation reduces steps to add new providers.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Feature Low

HUAWEICLOUD provider now implements DNSSEC support.

HUAWEICLOUD provider now implements DNSSEC support.

Source: granite4.1:30b@2026-05-20-audit

Confidence: low

Feature Low

POWERDNS adds automatic address hints for SVCB/HTTPS records.

POWERDNS adds automatic address hints for SVCB/HTTPS records.

Source: granite4.1:30b@2026-05-20-audit

Confidence: low

Dependency Medium

Bump brace-expansion from 5.0.5 to 5.0.6 in dependencies.

Bump brace-expansion from 5.0.5 to 5.0.6 in dependencies.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Deprecation Medium

NAMEDOTCOM, OPENSRS, and SOFTLAYER providers need maintainers; warnings issued.

NAMEDOTCOM, OPENSRS, and SOFTLAYER providers need maintainers; warnings issued.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Refactor Medium

Updated old Go module path in flattener.js.

Updated old Go module path in flattener.js.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: low

Full changelog

Greetings DNS fans!

Release highlights:

  • NEW PROVIDER: DNSControl now supports NetBird! Thanks and welcome to @yzqzss who joins the project as its maintainer. We look forward to great things!
  • dnscontrol init has come a long way!
    • It now downloads existing DNS records and builds your dnsconfig.js! Thanks, @cafferata!
    • Support has been added for: ALIDNS, AZURE_DNS, BUNNY_DNS, CLOUDFLAREAPI, CNR, DIGITALOCEAN, GANDI_V5, GCLOUD, GCORE, HEDNS, HETZNER_V2, HOSTINGDE, HUAWEICLOUD, LOOPIA, LuaDNS, MYTHICBEASTS, and NAMECHEAP! Thanks, Claude and the various provider maintainers!
  • DOCS: README.md has been reorganized and CONTRIBUTING.md has been added. Thanks, @cafferata!
  • Adding new providers has fewer steps thanks to automation of certain file updates. Thanks, @cafferata!
  • And much, much, more!

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

Sincerely,
--Tom Limoncelli

Monthly video call!

Everyone is invited to the Monthly DNSControl Community Video Conference Call on the 2nd Tuesday of each month. Join whether you are a new user with questions or an experienced developer that wants to discuss DNSControl internals... or anything in between! Meeting details on
GitHub Discussions.

Changelog

Major features:

  • bbd110906f6f812a8e4aaceb23ea31bf29fc7715: FEATURE: init - verify credentials, select zones and import records (#4301) (@cafferata)
  • 47d64a972ab60f70632013e7c5b700d188fd7377: NEW PROVIDER: Netbird DNS Zone (#4170) (@yzqzss)

Provider-specific changes:

  • 36eb0619878119173c7bc8be2f61b7f1d69b5a3a: ALIDNS: support init command (#4271) (@TomOnTime)
  • 4f752f368195fa31d617cb2bd8c359b8e64f3107: AZURE_DNS: support init command (#4273) (@TomOnTime)
  • ddd7cfcbdf566b137a138de7a24dfe512845afd9: BUNNY_DNS: support init command (#4275) (@TomOnTime)
  • 9c3c609442a257be615580f648f75cd695730e6a: CLOUDFLAREAPI: support init command (#4276) (@TomOnTime)
  • 490f205b683362b0f1c73bfebb3bbcc4f44e589f: CNR: support init command (#4278) (@TomOnTime)
  • 06234211d10bc97932f6841eb52d3e739479a952: DIGITALOCEAN: support init command (#4280) (@TomOnTime)
  • 9e20bccad722d0e8907df34f821f92012de3021f: GANDI_V5: Enable init and get-zones (list) subcommands (#4285) (@TomOnTime)
  • a2db481c3b35d001facc4bbf07a1b38af8970b45: GCLOUD: support init command (#4286) (@TomOnTime)
  • 731799561589af4ed331ab60a5050421d3b3a270: GCORE: support init command (#4287) (@TomOnTime)
  • 1a66a428b8c91958202d2f30dc096c2cc796d331: HEDNS: support init command (#4289) (@TomOnTime)
  • c8b185d0880a3147fe2bbb9eef62eb6c920d7df8: HETZNER_V2: support init command (#4290) (@TomOnTime)
  • 7aaaa233b63ac78c25fbce6f7815583efe283c04: HOSTINGDE: support init command (#4291) (@TomOnTime)
  • b3ff3762f0284b3289fe586eebf22e5a14f342ae: HUAWEICLOUD: implement DNSSEC support (#4302) (@huihuimoe)
  • 7407870b5839943c2194e0ac280e831e7a938c00: HUAWEICLOUD: support init command (#4292) (@TomOnTime)
  • a20948ede0a69a5c77d36acb8395163783bbb9dd: LOOPIA: support init command (#4296) (@TomOnTime)
  • 4585492c2bf3efa4d659bdd77211a29ca0abed96: LUADNS: changed to use record set to perform bulk operations (#4264) (@riku22)
  • 368f43b62dd339df1bc0eaf290d99eb8b2e3e79c: LuaDNS: support init command (#4268) (@riku22)
  • 16c26ac7a9a6e3f7f108368682eba59622583af3: MYTHICBEASTS: support init command (#4298) (@TomOnTime)
  • d128d502ce8dbda56ac327cc3c35c6960cbd96b2: NAMECHEAP: support init command (#4299) (@TomOnTime)
  • 037df27148913c257cd9a4c8fe9b239c3ff6730e: POWERDNS: Add support for automatic address hints in SVCB/HTTPS records (#4305) (@jpbede)
  • a38886a360d3387982b4ea62a40aa8335937957b: VERCEL: add to integration test (#3876) (@SukkaW)

Documentation:

  • 3b9394955bf57819b848350367eb8397e513bb1b: DOCS: Add CONTRIBUTING.md with developer onboarding guide (#4261) (@cafferata)
  • 15056c9daf6c776b829f7a7ba07bd3da7471de00: DOCS: Reorganize README.md (#4263) (@cafferata)

CI/CD:

  • 38251042cfd220c1cd78c98488008d002acf06b2: Build(deps): Bump brace-expansion from 5.0.5 to 5.0.6 (#4307) (@dependabot[bot])
  • 79939529673faa999843fa6d89824e87d884d4bd: CI: run scripts and format files (#4306) (@jpbede)
  • 23b4816d83e4652f5ad75d2e93d42d02fff4765c: CICD: Auto-generate labeler config for provider labels (#4269) (@cafferata)
  • 4f955759f9762f98f03aa409a7195a73f81fef7d: CICD: Do not run all tests on VERCEL in GHA (#4260) (@TomOnTime)

Other changes and improvements:

  • 7887ffd6a9444b862e3e8484493d204f14796b49: CHORE: Update old Go module path in flattener.js (#4262) (@cafferata)

Deprecation warnings

[!WARNING]

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM, OPENSRS and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install DNSControl/tap/dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/DNSControl/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade DNSControl/tap/dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

Breaking Changes

  • REV() will switch from RFC2317 to RFC4183 in v5.0 (breaking change).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track DNSControl

Get notified when new releases ship.

Sign up free

About DNSControl

Infrastructure as code for DNS!

All releases →

Related context

Earlier breaking changes

  • v4.41.0 REV() will switch from RFC2317 to RFC4183 in v5.0 (breaking change)
  • v4.40.0 REV() will switch from RFC2317 to RFC4183 in upcoming v5.0 (breaking change)
  • v4.38.0 `dnscontrol get-zones` drops older syntax support, changing behavior
  • v4.38.0 REV() will switch from RFC2317 to RFC4183 in v5.0, a breaking change for affected configurations

Beta — feedback welcome: [email protected]