How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Argo CD v3.4 Release Candidate

calendar_today March 17, 2026 person Codey Jenkins domain argo
ArgoCD logo juggling a pause button, a filter, and a paddlock.

The Argo CD community is pleased to announce Argo CD v3.4 Release Candidate! This release includes highlights such as support for the Microsoft Teams Workflows notification service (the replacement for retiring Office 365 Connectors), several Application list filter UI improvements, and continued investment in the Source Hydrator. We encourage the community to test the release candidate and share feedback before the final release.

Microsoft Teams Workflows Support

Microsoft announced the retirement of Office 365 Connectors on March 31, 2026. If you are using Argo CD’s existing teams notification service, your notifications will silently stop working on that date. This release updates the bundled notifications-engine dependency to a version that includes the new teams-workflows service — a full replacement built on Microsoft Power Automate (Teams Workflows) with support for modern Adaptive Cards, shared channels, and private channels.

The teams-workflows service uses Power Automate webhooks instead of the legacy Office 365 Connector webhooks. Adaptive Cards replace the MessageCard format, giving you rich, structured layouts with semantic colors (Good, Warning, Attention, Accent) and custom action buttons. It also adds support for shared and private channels, which the legacy connector did not support.

The legacy teams service remains available but is now marked as deprecated in the docs and has also been backported to v3.3 and v3.2 — migrate before March 31, 2026.

Thanks to @pasha-codefresh for this contribution.

Application List Filter Improvements

v3.4 adds several improvements to the Applications list filter panel.

Annotation-Based Filtering

Argo CD has long supported label-based filtering, but many production environments rely heavily on annotations for operational metadata. You can now filter the Applications list by metadata.annotations using the same unified metadata selector already used for label filtering.

Reference image of dropdown in UI showing ArgoCD’s UI annotation filtering on applications.

Operation Status Filter

A new Operation Status filter joins the existing Sync Status and Health Status filters. This makes it easy to see at a glance which applications are actively syncing, completed sync, errored on sync, or failed syncing.

Clear All Button

The filter sidebar now includes a Clear all button, bringing the Applications list into UX parity with the Resource filters panel. Reset all active filters in a single click.

Thanks to @zc149 (annotation filtering), @schlags (operation status filter), and @choejwoo (clear-all button) for these contributions.

Source Hydrator UI Improvements

The Source Hydrator continues to mature with two UI enhancements this release.

Hydrator Properties in the Summary Tab

The Application Summary panel now pulls Source Hydrator-specific properties into their own SOURCE panel. When source hydration is enabled, hydrator-specific fields are separated from the standard source properties.

Hydrator Support in the App Create Panel

The application creation panel now includes a checkbox to enable Source Hydrator configuration when creating a new application. Toggling it switches the source panel between the standard view and a hydrator-aware view, so you can configure hydrator settings without editing YAML directly.

Thanks to @jwinters01 for these contributions.

Pause Reconciliation for a Cluster

Operators running hybrid topologies — such as those using argocd-agent alongside a standard Argo CD instance — sometimes need to register a cluster in the inventory without having the application controller actively reconcile it. Previously the only option was to remove the cluster entirely.

A new annotation, argocd.argoproj.io/application-cluster-ignore=true, can be set on a cluster Secret to skip reconciliation, cache warming, and cluster info updates for that cluster while keeping it visible in argocd cluster list and API responses.

apiVersion: v1
kind: Secret
metadata:
name: my-cluster-secret
namespace: argocd
labels:
argocd.argoproj.io/secret-type: cluster
annotations:
argocd.argoproj.io/application-cluster-ignore: "true"
# ...

Thanks to @drewbailey for this contribution.

Reduced DNS Noise from gRPC Health Checks

Argo CD components perform gRPC health checks against themselves, and the default gRPC client behavior includes DNS TXT lookups for _grpc_config.<hostname> to fetch service configuration. In dual-stack environments or clusters with restrictive DNS policies, these lookups generate excessive noise and can cause timeouts.

The GRPC_ENABLE_TXT_SERVICE_CONFIG environment variable is now set to false by default in the Argo CD Dockerfile. This stops the spurious DNS queries with no functional impact — the TXT-based service config mechanism is not used by Argo CD. If you need to re-enable it, override the variable via argocd-cmd-params-cm:

apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
data:
GRPC_ENABLE_TXT_SERVICE_CONFIG: "true"

Thanks to @vstoican for this contribution.

Extended OpenTelemetry Tracing for Authentication

v3.4 extends OTEL tracing to cover the full OIDC authentication flow: SSO session handling as well as token cache reads and writes. If you have an OpenTelemetry collector configured, you'll see traces for login flows alongside your existing sync and reconciliation spans.

Thanks to @devopsjedi for this contribution.

ApplicationSet Cache Synchronization

The ApplicationSet controller relies on a watch-based cache to determine the desired state of managed applications. With 100+ applications in a set, this cache can become stale between reconciliation cycles, causing the controller to attempt re-creating applications it just created and causing reconciliation failures.

This release adds active cache synchronization in the ApplicationSet controller, keeping the cache consistent with the API server during bulk application operations.

Thanks to @alexmt for this contribution.

Glob Patterns in Values Files

Glob patterns can now be used in valueFiles entries to match multiple files at once. This is useful when the set of environment-specific override files is not known in advance, or when you want to pick up new files automatically without updating the Application spec.

source:
helm:
valueFiles:
- envs/*.yaml

Thanks to @nitishfy for this contribution.

New Session Tokens CLI command

The argocd cli adds the command argocd account session-token. SSO logins didn’t map cleanly to automation and direct API use—you had to invent fragile workarounds to get a bearer token. This command prints the current session token from your existing argocd login, so you can drop it into scripts, curl, or ARGOCD_AUTH_TOKEN in one step. Add -o json when you want structured details (e.g. issuer, username, expiry).

Thanks to @alexef for this contribution.

Expanded Manifest Generation Git Paths

argocd.argoproj.io/manifest-generate-paths previously applied cleanly to typical single-source setups; multi-source Applications that pair Helm with a Git ref source (for example, values files resolved from Git) were out of scope, so path-based skipping did not apply and repo-server work stayed high in large monorepos. This release extends the feature to that configuration: annotated paths now drive whether manifest generation is skipped, matching the documented intent for Helm + Git ref multi-source apps.

Thanks to @fm1ck3y for this contribution.

Notable Bug Fixes

  • JWT token revocation on logout — Tokens are now invalidated in Redis on logout, so a logged-out token can no longer be reused. This closes a security affecting OIDC, Dex, and admin tokens. Thanks to @anandf.
  • Excessive ls-remote on monorepos with auto-sync — A commit to a monorepo with many auto-syncing applications could trigger a git ls-remote call per source per application, putting load on the repository server. The forced ref resolution introduced to fix a UI consistency issue now correctly applies only to manual sync operations, not automatic ones. Thanks to @dudinea.
  • Rollback no longer wipes sync policy fields — Triggering a rollback from the UI used to null out the entire syncPolicy.automated object, wiping fields like prune. The UI now toggles automated.enabled instead, matching the behavior on the Application summary page. Thanks to @danxmoran.
  • ApplicationSet namespace isolation on cluster secret updates — In multi-ArgoCD deployments sharing a cluster, updating a cluster Secret was triggering reconciliation across all ApplicationSets in all namespaces, ignoring the allowedNamespaces restriction. ApplicationSets now correctly filter cluster secret change events against their allowed namespace list. Thanks to @OpenGuidou.
  • Multi-level cross-namespace resource hierarchy — Cross-namespace parent→child relationship traversal failed when the hierarchy had multiple levels of cluster-scoped intermediate resources before reaching namespaced children. Thanks to @jcogilvie.
  • Sync hook finalizer — On 3.x, hooks could keep argocd.argoproj.io/hook-finalizer after failed or terminated syncs, leaving apps stuck until the finalizer was removed manually. The controller now always removes hook finalizers when a sync ends (success, failure, or error), on explicit terminate, and waits for SyncFail hooks before finishing. Thanks to @agaudreault

Where Can I Get the New Release?

For installation instructions and the full changelog, check out the release notes.

We’d love to hear your feedback! Find us on the #argo-cd channel in CNCF Slack to share your experience, report issues, or just say hi.

Thank You

A huge thanks to all Argo Community contributors and users for their contributions, feedback, and help in testing the release!

<hr /><p>Argo CD v3.4 Release Candidate was originally published in Argo Project on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>

open_in_new Read original post