Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.308 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.303 ·

CA loading drops deny-listed root certificates and falls back to bundled roots

Claude Code now filters bundled, system and NODE_EXTRA_CA_CERTS certificates against a built-in deny list, and uses bundled roots when the system CA API is missing

Group of 2 You'll notice Improvements
JSON All of v2.1.303
You'll noticeTier: how much it should matter to you
3Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
TLS CertificatesArea: what it touches
ImprovementsKind: in v2.1.303,
ImprovementsSection of the release

What

Claude Code loads root certificates, which decide which secure (TLS) connections it trusts. It takes them from three sources: the certificates bundled with it, the operating system's store, and a file named by the NODE_EXTRA_CA_CERTS environment variable, which users set to add their own certificates. The loader (Xn) now checks every certificate from all three sources against a built-in deny list:

  • The deny list holds four SHA-256 certificate fingerprints, each paired with a public-key hash, and a certificate matching either is blocked.
  • Blocked certificates are dropped. PEM blocks that cannot be parsed are checked for blocked certificates too, and blocks nested more than 8 deep (me = 8) are ignored.
  • In the NODE_EXTRA_CA_CERTS file, a block holding a deny-listed root is skipped and an error is written to the console, for example: "Claude Code ignored a block in the NODE_EXTRA_CA_CERTS file: the block holds a root certificate on the CLI's deny list, in a form Claude Code could not read. The other certificates in the file are still used." If a blocked certificate is in a form that cannot be cut out, the whole file is ignored.
  • If filtering leaves the list empty, loading falls back to the bundled roots. If every bundled root is blocked, startup throws an error telling the user to update.

Separately, when stores=system is in use but the system CA API is unavailable, the loader no longer stops early with "deferring to runtime". It now logs that it is using bundled roots and loads them.

Why

This changes which root certificates Claude Code trusts. If you use a custom certificate file, for example behind a corporate proxy, some of its certificates, or the whole file, may now be ignored. When that happens, Claude Code writes an error message to the console. If you rely on the system certificate store and its API is missing, Claude Code now uses its bundled roots instead of leaving the choice to the runtime.

See this entry in the whole of v2.1.303 →

Feedback