Argo CD security patches and supported versions

Argo CD patches only its three most recent minor versions, and a new minor ships every three months. This page explains how to stay inside that window and apply security fixes without disrupting production syncs.

On this page

Keeping Argo CD security patches inside the supported window

Only the three most recent minor versions of Argo CD receive patch releases, and a new minor version ships once every three months. That means an instance that delivers to production clusters has a fixed window to take security fixes, and the window closes faster than many teams expect. Once your running minor falls out of the three, a fix will be published for a newer line and you will have to upgrade to receive it. Treat the support window as a planning input, the same way you treat certificate expiry or a vendor end-of-life date, rather than as something you notice when a patch arrives.

Your team owns patching, because DeployOpen's role is to plan and carry out the work inside your infrastructure, not to operate your production delivery path on your behalf. Someone on your side needs to watch the Argo CD releases page and the GitHub security advisories for the repository, decide which minor line you are on, and schedule the move to a supported patch level. Ask your DeployOpen contact to confirm which minor line your instance runs today and how many quarters remain before it leaves the window, and record that date in your change calendar with the same owner named.

This page covers how to read the release cadence and advisories, how to test a patch against a staging copy so that production syncs keep running, and how to handle the breaking changes that come with some minor upgrades. The upgrade notes for the 2.14 to 3.0 move, for example, changed RBAC scope and resource tracking, so a routine patch and a major move need different amounts of testing. Start with the Argo CD release process and cadence to confirm the current policy before you set your schedule.

Reading GitHub security advisories and release notes

A patch routine starts with knowing where fixes are announced and which minor line each one touches. The cards below cover the release sources to watch, what to read in each release note, and how to map a fix to the version you run.

Watch the argoproj/argo-cd releases page

The GitHub releases page is the primary place where patch releases are published, so it is the first source to subscribe to. Watch releases for the argoproj/argo-cd repository and set up notifications for new releases, not only for commits. Confirm with your security team who receives these alerts and who owns the decision to schedule a patch.

Check the release marked latest

The release marked latest is the newest stable build, and it is not always the version your team runs. A release candidate can appear on the same page before it is marked stable, so check the release label before you copy a version number into a change request. Record which minor line each release belongs to.

Map patches to each minor line

Patch releases are published per minor line, and only the three most recent minor versions receive them. A fix shipped for one line does not automatically reach another, so a patch for the newest line does not protect an older installation. Read the version string and match its minor number against the one you run in production.

Read upgrade notes before patching

Each release note should be checked for upgrade notes, changed defaults and breaking changes, even when the release is a patch. A patch that changes a default or a configuration key can alter sync behavior after the update. Ask the vendor or your platform owner to confirm whether the release changes any setting your environment depends on.

Check whether a fix affects your exposure

A release note may describe a fix in a component you do not expose, such as a feature you do not enable or an endpoint you do not publish. Compare the affected area against your configuration, including SSO, the repo-server, webhooks and any plugins. Record the result so the decision to patch or defer is traceable.

Plan around release candidates

A release candidate is a preview of the next minor version and is not a patch for your current line. Treat it as a test target in a non-production cluster, where you can check your manifests, plugins and RBAC against upcoming changes. Do not move production to a release candidate to pick up a fix.

A patch routine that does not break production syncs

This sequence moves a patch release from the GitHub advisory to a verified production instance while keeping syncs running. Each step closes with a check, and a rollback decision point sits before any production change.

  1. Inventory the running Argo CD versions

    The platform owner records the Argo CD version on every instance, including the server, repo-server and application controller images, and any Helm chart or manifest version that pins them. Multiple instances, such as a shared control plane and a separate install for a regulated environment, each get their own line. Confirm the minor version against the three most recent minors that receive patch releases, as described in the Argo CD release process. Done when every instance has a documented version and a status of inside or outside the supported window.

  2. Subscribe to release and advisory feeds

    Someone on the platform team watches the argoproj/argo-cd releases page on GitHub and the repository's security advisories, and routes notifications to an owned channel rather than one person's inbox. Record who triages each notice and the expected response path for a security patch. Patch releases on the releases page are the signal to start this routine, so the feed must reach the people who can act. Done when a test notification reaches the on-call channel and the triage owner has acknowledged it.

  3. Test the patch in a non-production instance

    Deploy the target patch release to a non-production Argo CD that mirrors production settings, including SSO, projects, repository credentials and cluster registrations. Load representative applications, such as Helm charts, Kustomize overlays and any custom plugins, and run a full sync cycle with each. Compare the results with the pre-patch baseline. Done when the test instance syncs its representative applications with the same health and sync states as before the upgrade.

  4. Check release notes for sync-affecting changes

    Read the release notes and the upgrade notes for the target version, looking for changes to sync behavior, RBAC evaluation, resource tracking, repository configuration, or manifest generation. Major version guidance, such as the 2.14 to 3.0 upgrade notes, shows the kinds of changes teams must handle, though a patch release is usually narrower. Mark each item as no action, configuration change, or blocker. Done when every sync-affecting item has an owner and a decision recorded in the change ticket.

  5. Schedule the window and set the rollback point

    The change owner agrees a maintenance window with application teams, including who must be available to watch syncs and who can halt automated syncs if needed. Before the window, define the go and no-go criteria, such as failed test syncs or unexpected drift on representative applications, and the rollback trigger that applies. Confirm the window and criteria with the approvers named in the change process. Done when the approved change record states the window, the contacts, and the conditions under which the team rolls back.

  6. Back up Argo CD resources before the change

    Export the Argo CD configuration and state that Kubernetes holds, including Applications, ApplicationSets, AppProjects, ConfigMaps, and the Secrets that store repository and cluster credentials. Store the export outside the cluster being changed, and record the current image tags and chart values so the previous version can be restored. Because Argo CD keeps its data in Kubernetes objects and Redis is a disposable cache, this export is the recovery point that matters. Done when a restore test on a scratch namespace or cluster succeeds and the export checksum is recorded.

  7. Upgrade the production instance

    Apply the tested patch using the same method as the non-production instance, whether manifests, Helm or Kustomize, so the only difference is the version. Pause automated sync on high-impact applications if the change owner requires it, and watch the controller and repo-server logs as the pods roll. Record the start and end times and any pods that fail to become ready. Done when all Argo CD components report the new version and the rollout completes without crash loops.

  8. Verify health, sync status and rollback

    Check that each production application reports the expected sync and health status, that no application is unexpectedly OutOfSync or Progressing, and that SSO login, cluster connectivity and repository access still work. Compare the results to the pre-change inventory and the test run. If a go and no-go criterion fails, use the rollback point from the backup and the recorded previous image tags, then rerun the checks. Done when the verification record is signed off by the change owner and the inventory is updated to the new version.

Patch, minor and major upgrade paths compared

This table compares the three ways to move an Argo CD installation: patch releases within the current minor line, moving to the next minor before the current one leaves the supported window, and major upgrades with breaking changes. Read each row as a decision: the first column names the test you need to run, and the cells show when each path fits and where it usually fails.

PathWhen it fitsWhat changes and what to testMain risk
Patch release in the same minor lineSecurity fixes and bug fixes on the version you already run, typically the first step after an advisoryBinaries and images change, configuration does not. Test a sync of representative applications in a non-production cluster and confirm the controller, repo-server and API server restart cleanlySkipping the test window on a production control plane that every team depends on
Next minor release before the current line leaves the windowKeeping inside the supported window, since only the three most recent minor versions receive patch releasesNew features and default changes may arrive. Review the release notes for each minor you cross, check custom plugins and RBAC policies, and rehearse on a copy of your configurationFalling behind so far that a security advisory finds you on an unsupported minor with no patch path
Major upgrade such as 2.14 to 3.0Planned change windows where the official upgrade notes list changes you must make before the moveUpdate and delete RBAC now apply only to the application itself. Logs access needs an explicit logs, get permission. Annotation-based resource tracking is the default. Repositories must be Kubernetes Secrets and Dex RBAC uses federated_claims.user_idUsers losing access to logs or failing to update or delete applications, and tracking changes that alter which resources an application appears to own
Policy and access review after any upgradeEvery minor and major move, before users return to normal workConfirm admin and SSO login, project roles, logs access for each team and webhook delivery. Compare RBAC outcomes against a list of expected actionsAssuming the sync dashboard works means access rules still match what teams need
Rollback planBefore any minor or major moveBack up the Argo CD namespace resources and confirm you can restore the previous manifests or Helm values. Record the version you are leavingA rollback that is untested or that does not account for CRD or secret format changes
Advisory to patch timingWhen a GitHub security advisory or release names a fix for your minor lineCheck the advisory against your installed minor, then plan the patch on the same line or the next supported minor. Confirm exact versions on the releases pageRelying on memory of version numbers instead of the published release list

How patching differs for single-cluster and multi-cluster installs

When Argo CD runs in the same cluster as the workloads it deploys, one upgrade touches both the controller and the applications it manages. The blast radius is contained, but there is little separation between the tool and the production it controls, so a bad patch can stop syncs and leave you unable to roll back through the same path.

  • Test scope: Validate a staging instance with a copy of your Applications, projects and repository credentials, then run a sync and a rollback for at least one workload per team.
  • Timing: Patch releases are published on GitHub, and the project supports only the three most recent minor versions, so schedule patches inside a regular window instead of waiting for a quarterly minor release.
  • Evidence: Keep the release tag, the staging sync results and the change ticket together so the upgrade can be traced to the advisory it addressed.
  • Rollback: Confirm you can restore the previous manifests or Helm release from Git and that the Redis cache can be rebuilt, since it is disposable.
  • Access: Make sure a break-glass login still works before the change begins, because a failed upgrade is the moment you need it.

Confirm with your change control process whether a single-cluster tool needs the same approval level as the production workloads it deploys, and who may approve an out-of-cycle patch.

Security and operational risks of falling behind on patches

Argo CD sits in a privileged position: it reads Git content, runs templating tools on it, and holds credentials for every cluster it deploys to. Each of the risks below grows when a patch release is left unapplied, and they compound when test and production run different versions.

Unpatched repo-server execution

The repo-server runs Helm and Kustomize against repository content, so a flaw in that component is reachable by anyone who can push or influence manifests. Falling behind on patches keeps that code path exposed after a fix exists. Check which Argo CD minor version you run, whether it is still inside the patch window, and which repositories each project can source from.

JWT authentication flaws

Argo CD authenticates API requests only with JSON Web Tokens, so the token validation code is the gate for every API call, including automation tokens. An unpatched release leaves that gate in its older form. Confirm your deployed version, review how long issued tokens live, and check whether revoked or disabled accounts can still reach the API.

Credential exposure in responses and logs

Argo CD redacts cluster, Git and OAuth2 credentials from API responses and logs. Redaction is code, and a defect in it can expose registry, Git or cluster secrets to anyone reading logs or API output. Ask whether each advisory affects redaction, and rotate affected credentials when a fix requires it.

Advisory tracking gaps

Security fixes are announced through GitHub security advisories and release notes, not through a notification your team receives automatically. Without a named owner who watches the project's releases page, a fix can sit unread for weeks. Assign a person or on-call rotation to review each new patch release and record the decision made for it.

Version drift between environments

When staging runs a newer patch than production, the release you tested is not the release you run, and sync behavior can differ between them. Drift also grows when a team stays on an older minor version that no longer receives patches. Keep test and production on the same minor line and promote the same patch version through each environment.

Upgrades that outlast the window

Each minor release arrives roughly every three months, and only the three most recent minor versions receive patch releases. A team that skips several minors faces a larger upgrade with breaking changes, such as the RBAC and annotation tracking changes in 3.0. Plan a recurring upgrade slot and read the upgrade notes before each jump.

Questions buyers ask about Argo CD patching and support

How much effort does an Argo CD patch cycle take?

The effort depends on how many clusters, applications and Argo CD configuration layers you run, and on how much of the patch test is automated. A patch release usually needs a staging run against a copy of your applications, a check of the sync and health status of each application, and a rollback plan. Ask any partner to break its quote into a one-time setup of the test pipeline and a recurring patch routine, so you can see which part you keep paying for. The project publishes patch releases for the three most recent minor versions, so the recurring work is the same routine repeated, not a new project each time.

Can our own team run Argo CD patching internally?

Yes, many teams do, provided someone owns the routine and has time for it. The work is reading release notes and GitHub security advisories, upgrading a non-production instance first, running sync checks, and scheduling production during an approved window. The skills needed are Kubernetes operations, Git-based change control and enough Argo CD knowledge to spot a changed default. Ask yourself whether that person can cover the work during leave and incidents. Outside help is most useful for the first setup and for the periodic minor upgrades, which carry more change than a patch.

What does the work need from our team?

Plan for four inputs: a non-production Argo CD instance that mirrors production closely enough to test real syncs, read access to the repositories and clusters involved, a named approver for production changes, and recurring change windows. Each application's sync and health behavior should be documented so that a patch can be judged against a known baseline. Your change process will also need to accept the patch as a standard change, or it will delay every release. Confirm these inputs before a partner scopes the work.

How often will we need to upgrade Argo CD?

Argo CD ships a minor release every three months, so a minor version falls out of the patch window about a year after it was first released. The project supports the three most recent minor versions with patch releases, which means you should plan to move to a newer minor version at least once a year to stay supported. Patch releases arrive more often than minor releases and should be applied on your normal security cycle. Track the release process page and the GitHub releases page to know when your current minor version is near the end of support.

Can we skip a security patch and wait for the next minor release?

Skipping is a risk decision, and it should be written down with an owner and a review date. A patch on a supported minor line fixes issues that are already public in the advisories, so waiting for a later minor version leaves those issues open in your environment. If a patch carries a breaking change for your configuration, the usual response is to fix the configuration in staging and then apply the patch, not to defer it indefinitely. Compensating controls such as tighter network policy, restricted project permissions and disabled anonymous access reduce exposure while you prepare the change.

Does Argo CD itself have a paid edition with patch support?

No. Argo CD is released under the Apache License 2.0 (SPDX: Apache-2.0), and the project does not offer a paid edition. The cost of patching is therefore the staff time, test infrastructure and any outside help you choose to buy, not a license fee to the project. Any vendor that sells a supported distribution or subscription is a separate decision, and you should ask it exactly which patch windows, versions and advisories its terms cover.

What does a DeployOpen support retainer cover for patching?

DeployOpen works in your own infrastructure, so patches are applied in the clusters and accounts you control, not in a DeployOpen environment. Ongoing support, upgrades and continuous testing are available as retainers, and most engagements are fixed-scope with scope, deliverables and timelines agreed in writing before work starts. A quote follows from that written scope, and DeployOpen does not publish a price list. Ask for the list of patch versions covered, the test steps, the change support and how emergency advisories are handled before you sign.

What to confirm in your environment before you commit to a patch schedule

Before you set a patch cadence, confirm which minor version of Argo CD actually runs in production. The project patches only the three most recent minor versions, so the first question is whether your running version is still one of them. Check the deployed image tag on the argocd-server and argocd-application-controller workloads, and compare it with the current list in the Argo CD release process and cadence page. If your production version is already outside that window, the patch routine is a version upgrade problem first, and it should be planned as one.

Next, confirm where your Argo CD images and manifests come from. If you pull directly from the upstream argoproj/argo-cd releases page, you follow the project's own timing. If you consume a vendor build, an internal mirror or a Helm chart from a catalog, the patched image may arrive later, and the mirror may carry a different tag scheme. Ask who publishes the image, how long they take to republish after an upstream patch, and whether the signed digest you deploy matches the upstream release. Also confirm that test environments run the same minor and patch version as production, and that the Kubernetes and Helm versions used by the repo-server match what you tested against.

Finally, agree on how emergency patches move through change control before the first incident. Decide who can approve an out-of-cycle patch, whether a security advisory alone is enough to start one, and which evidence (release notes, the advisory, a test sync of representative applications) must be attached to the change. Confirm that a rollback path exists for the application controller and repo-server, and that a sync can be paused during the upgrade. Writing these answers down now is the difference between a patch that lands in a planned window and one that is rushed through the night.

How DeployOpen scopes and supports Argo CD patching

DeployOpen plans, implements and supports self-hosted Argo CD inside your own clusters and infrastructure, including the routine that keeps it inside the supported patch window. Engagements are fixed-scope, with the version policy, patch steps and handover agreed in writing before work starts.

How we scope

  • Inventory your current Argo CD minor version and its distance from the three supported minor versions.
  • Agree which clusters, namespaces and Argo CD components fall inside the patching work.
  • Confirm who reviews GitHub security advisories and how your change board approves each patch release.

How we build

  • Set up a staging Argo CD that mirrors production sync targets, projects and repository access.
  • Run each patch release in staging, comparing application health and sync results before production.
  • Script the upgrade path and rollback steps so a patch can be reverted without manual cluster edits.

How we hand over

  • Document the version policy, the quarterly minor release check and who owns each step.
  • Provide a patch runbook covering pre-checks, backups of Argo CD configuration and post-sync verification.
  • Train your platform team to read advisories and to decide when a minor upgrade is due.

How we support

  • Ongoing patch support, upgrades and continuous checks are available as a retainer, scoped in writing.
  • Retainer reviews confirm the running version stays inside the supported window after each release cycle.
  • Ask any provider to confirm how they test patches before production and who signs off a rollback.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.