github.com-cloudflare-cloudflared
all · 5 devs · built 2026-06-08
Repository snapshot
Monthly reports
Highlights
- Major advancements in *connectivity pre-checks* were delivered, including the implementation of the main `Run` method with concurrent probes and retry mechanisms [a9b6f703 · Miguel da Costa Martins Marcelino], integration into `cloudflared` startup and the `diag` tool [a67c583b · Miguel da Costa Martins Marcelino], and the addition of a `StaticEdgeDNSResolver` for `--edge` flag support [commit/22a95f7].
- A critical *remote kill switch* for *pre-checks* was introduced, allowing dynamic disabling via a DNS feature flag to enhance operational resilience [31de04f8 · Miguel da Costa Martins Marcelino].
- Significant security and dependency updates were performed, including bumping Go to version 1.26.3 and updating `go.opentelemetry.io/otel` and `go-jose/v4` to address CVEs [168f09cb · João "Pisco" Fernandes], and disabling the sensitive `/debug/pprof/cmdline` endpoint in the *metrics module* [4d8df2b2 · João "Pisco" Fernandes].
- Robust *integration tests* for the *pre-checks* subsystem were added [4494eee1 · Miguel da Costa Martins Marcelino], alongside a refactoring to centralize structured output logging using `cliutil.LogTable` and `zerolog` [4177dd69 · Miguel da Costa Martins Marcelino].
- Improvements to the *component-tests* suite were made to prevent `cloudflared` subprocess blocking and ensure reliable log capture, enhancing test framework stability [905d983d · Miguel da Costa Martins Marcelino].
Observations
- Commit volume increased significantly, with 18 commits this month compared to the 10-commit 2-month average (+71%).
- Maintenance activity more than doubled, with a score of 2 this month versus the 1-maintenance 2-month average (+103%), reflecting substantial efforts in dependency updates, security fixes, and code quality improvements.
- The waste score dropped to 0 this month, a -52% decrease from the 1-waste 2-month average, indicating highly efficient development with minimal rework or discarded changes.
- Grow score remained stable at 1 this month, showing a +35% increase compared to the 1-grow 2-month average, contributing to a total output of 4 this month vs 3-output 2-month average (+39%).
- A dominant focus on the *pre-checks* module is evident, with at least 8 commits directly contributing to its development, refactoring, or testing, including `[a9b6f703]`, `[22a95f7]`, `[a67c583b]`, `[31de04f8]`, `[0c901487]`, `[4494eee1]`, `[4177dd69]`, and `[e8f8b2af]`.
- Iterative development and refinement within the *pre-checks* module were observed, with commits like `[0c901487]` revising `--edge` support and `[e8f8b2af]` fixing missing TLS settings, indicating a thorough approach to feature implementation.
- Multiple Go version bumps (`[168f09cb]`, `[a453612e]`) and dependency updates (`[fbfd7608]`, `[ae3799a0]`) highlight a strong emphasis on maintaining security and leveraging the latest language features.
- Three distinct release documentation updates (`[0e84636d]`, `[f6f60e10]`, `[21ca2e22]`) were made, suggesting a rapid and well-documented release cycle during this period.
Performance over time
ETV stacked by Growth, Maintenance and Fixes.
Average performance per developer
ETV per active developer per month.
Active developers over time
Unique developers committing each day.
Knowledge concentration
How dependent is this repo on a small number of contributors? Higher top-1 share = higher key-person risk.
João "Pisco" Fernandes owns 57.1 % of commits.
Top contributors
Most impactful commits
Top 20 by ETV in the all-time window.
- 1.0ETVTUN-9016: update go to 1.24 ## Summary Update several moving parts of cloudflared build system: * use goboring 1.24.2 in cfsetup * update linter and fix lint issues * update packages namely **quic-go and net** * install script for macos * update docker files to use go 1.24.1 * remove usage of cloudflare-go * pin golang linter Closes TUN-9016Luis Neto · 96ce66bd · 2025-06-06
- 1.0ETVTUN-8861: Add session limiter to UDP session manager ## Summary In order to make cloudflared behavior more predictable and prevent an exhaustion of resources, we have decided to add session limits that can be configured by the user. This first commit introduces the session limiter and adds it to the UDP handling path. For now the limiter is set to run only in unlimited mode.João "Pisco" Fernandes · bf4954e9 · 2025-01-20
- 0.8ETVTUN-8861: Add session limiter to TCP session manager ## Summary In order to make cloudflared behavior more predictable and prevent an exhaustion of resources, we have decided to add session limits that can be configured by the user. This commit adds the session limiter to the HTTP/TCP handling path. For now the limiter is set to run only in unlimited mode.João "Pisco" Fernandes · 8bfe111c · 2025-01-14
- 0.7ETVTUN-8914: Create a flags module to group all cloudflared cli flags ## Summary This commit refactors some of the flags of cloudflared to their own module, so that they can be used across the code without requiring to literal strings which are much more error prone. Closes TUN-8914João "Pisco" Fernandes · 7336a1a4 · 2025-02-06
- 0.5ETVTUN-8861: Rename Session Limiter to Flow Limiter ## Summary Session is the concept used for UDP flows. Therefore, to make the session limiter ambiguous for both TCP and UDP, this commit renames it to flow limiter. Closes TUN-8861João "Pisco" Fernandes · 4eb0f8ce · 2025-01-20
- 0.5ETVTUN-10292: Add cloudflared management token command Create new management token command to support different resource permissions (logs, admin, host_details). This fixes failing component tests that need admin-level tokens to access management endpoints. - Add ManagementResource enum values: Admin, HostDetails - Create cmd/cloudflared/management package with token command - Extract shared utilities to cliutil/management.go (GetManagementToken, CreateStderrLogger) - Refactor tail/cmd.go to use shared utilities - Update component tests to use new command with admin resource Closes TUN-10292Gonçalo Garcia · 372a4b70 · 2026-03-05
- 0.4ETVTUN-10413: Centralize TLS curve configuration in crypto/ and adopt X25519MLKEM768 for QUIC/H2 Introduce a new crypto/ package as the single source of truth for TLS curve preferences used on every edge-facing connection, and adopt X25519MLKEM768 as the primary post-quantum key exchange for both QUIC and HTTP/2: PQ Prefer (default): X25519MLKEM768, P256Kyber768Draft00, CurveP256 PQ Strict (--post-quantum): X25519MLKEM768, P256Kyber768Draft00 The curve list is identical under FIPS and non-FIPS builds, so crypto.GetCurvePreferences takes only a features.PostQuantumMode and returns a fresh slice on every call. HTTP/2 now applies these curve preferences the same way QUIC does. The previous PostQuantumStrict rejection in serveHTTP2 and the forced QUIC-only selection in NewProtocolSelector are removed since both transports support the same post-quantum curves; the needPQ parameter is dropped from NewProtocolSelector accordingly. Also fix a shared tls.Config race: both the QUIC and HTTP/2 paths now Clone() the per-protocol entry from TunnelConfig.EdgeTLSConfigs before mutating CurvePreferences instead of writing through the shared map entry. Legacy Kyber draft curve X25519Kyber768Draft00 and the unused removeDuplicates helper are removed along with the old supervisor/pqtunnels.go / _test.go files. AGENTS.md is updated with guidance on the new crypto/ package, the cfdcrypto import alias, the tls.Config cloning rule, and the lint workflow implications of .golangci.yaml's whole-files: true setting.lneto · f674b82e · 2026-04-20
- 0.4ETVTUN-10563: introduce QUICConnection interface The bump of the QUIC library introduces a cyclic dependency between the connection and quic modules hence it is necessary to break this coupling. Right now, the connection module depends on the quic module for the datagram v2/v3 and to which a QUIC connection (currently an interface) is passed. As it is there is no issue however, under the hood, interface is a wrapper around an UDP connection and a QUIC connection meaning this type must be exposed to the quic module since the QUIC Connection will no longer be a interface but a struct. Given the above, these changes introduce an interface, QUICConnection, with the surface used today in cloudflared and a struct, ConnWithCloser, that implements said interface within the quic module. Closes TUN-10563Luis Neto · 52519f67 · 2026-06-01
- 0.3ETVTUN-8914: Add a new configuration to locally override the max-active-flows ## Summary This commit introduces a new command line flag, `--max-active-flows`, which allows overriding the remote configuration for the maximum number of active flows. The flag can be used with the `run` command, like `cloudflared tunnel --no-autoupdate run --token <TUNNEL_TOKEN> --max-active-flows 50000`, or set via an environment variable `TUNNEL_MAX_ACTIVE_FLOWS`. Note that locally-set values always take precedence over remote settings, even if the tunnel is remotely managed. Closes TUN-8914João "Pisco" Fernandes · b187879e · 2025-02-03
- 0.3ETVTUN-9803: Add windows builds to gitlab-ciJoão "Pisco" Fernandes · d9e13ab2 · 2025-09-04
- 0.3ETVTUN-9858: Remove proxy-dns feature from cloudflared Remove the DNS over HTTPS (DoH) proxy feature built on CoreDNS due to security vulnerabilities (GO-2025-3942, GO-2026-4289). This removes: - Standalone proxy-dns command (cloudflared proxy-dns) - Tunnel subcommand (cloudflared tunnel proxy-dns) - Proxy-dns flags for tunnel run (--proxy-dns, --proxy-dns-port, etc.) - Config file resolver section support - tunneldns/ package (CoreDNS-based implementation) - Related component tests BREAKING CHANGE: The proxy-dns feature is no longer available. Users should migrate to alternative DNS over HTTPS solutions.João "Pisco" Fernandes · 9388e7f4 · 2026-02-02
- 0.3ETVTUN-8960: Connect to FED API GW based on the OriginCert's endpoint ## Summary Within the scope of the FEDRamp High RM, it is necessary to detect if an user should connect to a FEDRamp colo. At first, it was considered to add the --fedramp as global flag however this could be a footgun for the user or even an hindrance, thus, the proposal is to save in the token (during login) if the user authenticated using the FEDRamp Dashboard. This solution makes it easier to the user as they will only be required to pass the flag in login and nothing else. * Introduces the new field, endpoint, in OriginCert * Refactors login to remove the private key and certificate which are no longer used * Login will only store the Argo Tunnel Token * Remove namedTunnelToken as it was only used to for serialization Closes TUN-8960Luis Neto · 906452a9 · 2025-02-25
- 0.3ETVTUN-9952: Bump go to 1.26GoncaloGarcia · 1e9deb10 · 2026-04-02
- 0.2ETVTUN-8855: fix lint issues ## Summary Fix lint issues necessary for a subsequent PR. This is only separate to allow a better code review of the actual changes. Closes TUN-8855Luis Neto · bfdb0c76 · 2025-01-30
- 0.2ETVTUN-10247: Update tail command to use /management/logs endpoint * TUN-10247: Update tail command to use /management/logs endpoint The /management endpoint will be deprecated in favor of new /management/resource endpoints. Because of that, we'll need cloudflared to use the new endpoint. Closes TUN-10247Gonçalo Garcia · 059f4d98 · 2026-02-20
- 0.2ETVTUN-9800: Migrate cloudflared-ci pipelines to Gitlab CI ## Summary This commit migrates the cloduflared ci pipelines, that built, tested and component tested the linux binaries to gitlab ci. The only thing that is remaining to move from teamcity to gitlab are now the release pipelines that run on master. Relates to TUN-9800João "Pisco" Fernandes · 173396be · 2025-09-11
- 0.2ETVTUN-10513: Disable /debug/pprof/cmdline endpointJoão "Pisco" Fernandes · 4d8df2b2 · 2026-05-07
- 0.2ETVDEVTOOLS-16383: Create GitlabCI pipeline to release Mac builds Adds a new Gitlab CI pipeline that releases cloudflared Mac builds and replaces the Teamcity adhoc job. This will build, sign and create a new Github release or add the artifacts to an existing release if the other jobs finish first.Gonçalo Garcia · 236fcf56 · 2025-04-30
- 0.2ETVTUN-9583: set proper url and hostname for cloudflared tail command This commit adds support for FedRAMP environments. Cloudflared will now dynamically configure the management hostname and API URL, switching to FedRAMP-specific values like `management.fed.argotunnel.com` and `https://api.fed.cloudflare.com/client/v4` when a FedRAMP endpoint is detected. Key to this is an enhanced `ParseToken` function, which now includes an `IsFed()` method to determine if a management token's issuer is `fed-tunnelstore`. This allows cloudflared to correctly identify and operate within a FedRAMP context, ensuring proper connectivity. Closes TUN-9583Luis Neto · 1cedefa1 · 2025-07-23
- 0.2ETVTUN-8855: Update PQ curve preferences ## Summary Nowadays, Cloudflared only supports X25519Kyber768Draft00 (0x6399,25497) but older versions may use different preferences. For FIPS compliance we are required to use P256Kyber768Draft00 (0xfe32,65074) which is supported in our internal fork of [Go-Boring-1.22.10](https://bitbucket.cfdata.org/projects/PLAT/repos/goboring/browse?at=refs/heads/go-boring/1.22.10 "Follow link"). In the near future, Go will support by default the X25519MLKEM768 (0x11ec,4588) given this we may drop the usage of our public fork of GO. To summarise: * Cloudflared FIPS: QUIC_CURVE_PREFERENCES=65074 * Cloudflared non-FIPS: QUIC_CURVE_PREFERENCES=4588 Closes TUN-8855Luis Neto · 31a870b2 · 2025-01-30