Kargo v1.9 Released: Infrastructure-Aware Promotions, Better Visibility, and Stronger Controls
Jesse Suen
We’re excited to introduce Kargo v1.9, the most significant Kargo release since v1.0.0.
Kargo is an open source project designed for continuous application promotion, with an enterprise-grade offering available through Akuity Kargo Enterprise. Version 1.9 delivers new features and improvements across both the open source and enterprise distributions.
Key Takeaway
What’s new in Kargo v1.9: Kargo v1.9 introduces infrastructure-aware promotions, allowing teams to promote both application and infrastructure changes in a single workflow. New Enterprise features include Terraform/OpenTofu support, embedded Argo CD visibility, and ServiceNow change management integration, while both OSS and
Enterprises gain stronger access controls, improved observability, and greater operational flexibility.
I. Akuity’s Kargo Enterprise - New Features from Kargo v1.9
Advanced capabilities for modern platform teams. Available only in Akuity’s Kargo Enterprise solutions.
Terraform & OpenTofu Support (Enterprise)
Kargo was built to promote applications across Kubernetes environments. As we worked with more teams, we found that even heavily Kubernetes-focused organizations run hybrid infrastructure—VMs, Terraform-managed resources, and serverless workloads alongside containers.
Before this release, infrastructure changes had to be managed separately through manual Terraform applies or separate CI/CD pipelines. This created coordination problems between platform and application teams, increased the risk of deployment drift, and made it difficult to maintain consistency across environments.
With this release, Kargo now handles both application and infrastructure promotions in a single workflow, enabling teams to provision entire environments as part of the promotion process.
Akuity’s Kargo Enterprise offering now supports deploying cloud infrastructure and non-Kubernetes workloads using Terraform and OpenTofu, bringing infrastructure changes into the same promotion workflows as your applications.
As part of a promotion, Kargo can now:
Perform HCL (HashiCorp Configuration) updates
Run Terraform plans and attach to a PR
Apply Terraform configuration
Capture and pass Terraform outputs downstream to Kubernetes applications
With this update, Kargo delivers fully coordinated promotions across infrastructure and application layers, all driven by the same promotion process.
For a deeper dive, check out the webinar: Multi Environment Promotions Made Simple.
Why it matters: Most teams manage infrastructure and applications in separate pipelines, which leads to coordination overhead, environment drift, and fragile handoffs between teams. By bringing Terraform and OpenTofu into the same promotion workflow as applications, Kargo v1.9 lets platform teams promote entire environments—infra and workloads together—using a single, consistent, and auditable process.
Embedded Argo CD UI
Kargo Enterprise now includes an embedded Argo CD view directly inside the Kargo UI.
Platform engineers no longer need to switch tabs or log into the Argo CD UI separately to understand what’s happening with their applications. From Kargo, users can now:
Browse the application tree
View diffs and live objects
Inspect Kubernetes events
Stream logs
This central visibility tightens the feedback loop during promotions and makes Kargo a single pane of glass for delivery workflows.

Why it matters: During promotions, teams often lose time switching between tools to understand application state, investigate failures, or validate changes. By embedding the Argo CD UI directly into Kargo, platform engineers get immediate, in-context visibility into application health, diffs, and logs—shortening troubleshooting cycles and keeping promotion workflows focused in a single place.
ServiceNow Integration
Fast deployments and formal change management have always been at odds in enterprise environments. Teams either manually create ServiceNow tickets outside their pipelines (slow and error-prone), or write brittle custom scripts that break the audit trail. For regulated industries, neither option is sustainable.
Kargo v1.9 introduces ServiceNow support for Kargo Enterprise, enabling teams to integrate formal change-management workflows directly into their promotion pipelines.
With a new set of promotion steps, Kargo can now create, update, query, and wait for ServiceNow (SNOW) tickets as part of a promotion. This allows organizations to:
Automatically open change requests when a promotion starts
Update tickets as artifacts progress through environments
Gate promotions on approval or ticket state
Maintain a clear audit trail linking deployments to approved changes
By embedding ServiceNow interactions directly into the promotion process, Kargo bridges the gap between modern GitOps-driven delivery and traditional ITSM requirements. Teams can move faster without bypassing compliance controls, replacing manual handoffs and brittle scripts with repeatable, auditable automation.
Why it matters: Enterprise teams are often forced to choose between moving fast and staying compliant, relying on manual ServiceNow tickets or fragile scripts that slow delivery and weaken auditability. By embedding ServiceNow change management directly into Kargo promotions, teams can automate approvals, enforce gates, and maintain a clear audit trail—making it easier to deliver quickly without bypassing required controls.
Threaded Notification Support
If you’re using notifications in Kargo Enterprise, v1.9 adds support for threaded messages, allowing you to post to a single Slack thread.
This solves a commonly requested use case: keeping promotion notifications for a single artifact grouped together as it progresses through multiple environments, instead of spamming separate messages.
The result: cleaner channels and better context
Why it matters: Promotion notifications often flood shared channels, making it hard to follow the progress of a single change or understand its context. Threaded notifications keep all updates for an artifact in one place, giving teams clearer visibility into promotions while keeping communication channels clean and focused.
II. Kargo v1.9 Enhancements - Available in both OSS Kargo and Akuity’s Kargo
A New REST API for Long-Term Compatibility
Kargo v1.9 introduces a new RESTful API, designed to ensure Kargo remains future-proof, easier to integrate with, and simpler to automate.
This new API is an important investment in the platform's long-term health and sustainability. It removes constraints that previously limited Kargo's ability to adopt newer Kubernetes versions, ensuring that future releases can track Kubernetes more closely and benefit from upstream improvements without friction.
From a user perspective, the benefits are straightforward:
Easier integration with external systems and internal tooling
First-class support for simple automation using tools like
curland browser developer toolsThe ability to generate clients in other languages from OpenAPI / Swagger definitions
A more familiar and accessible API surface for platform and automation teams
The Kargo CLI already uses this new REST API, meaning users benefit immediately without changing their workflows. Introducing it now also avoids forcing another disruptive upgrade later, when the legacy gRPC API is eventually retired.
Better Security & Access Control
Shared Project Resources
Kargo v1.9 introduces centrally managed shared repository credentials, Secrets, and ConfigMaps, making it significantly easier to manage sensitive and shared configuration across projects.
Previously, there was no way to define a generic Secret or ConfigMap and then to reuse it across multiple projects for promotion steps (for example, HTTP-based steps). While Kargo did have a concept of “global credentials,” they were limited to repository-related credentials (Git, Helm, image registries) and could be used implicitly only through a small set of steps (e.g. git, helm, oci).
With v1.9, Kargo admins can now manage shared credentials, Secrets, and ConfigMaps from a new Project category in the system settings. Promotion steps can explicitly reference these shared resources using the new helper functions:
sharedSecret()sharedConfigMap()
These helpers make usage clear, convenient, and consistent across projects.
All shared resources are stored in a single kargo-shared-resources namespace, replacing and deprecating the old user-supplied list of global credential namespaces. This new shared namespace provides a cleaner, more centralized, and more secure model for managing shared configuration at scale.
API Tokens
Kargo now supports API tokens, enabling secure, programmatic access through both the CLI and API.
Key capabilities include:
Generating tokens from built-in Kargo roles
Using custom project roles for fine-grained access control
Automating workflows without relying on user credentials
This unlocks cleaner integrations with CI systems, automation tools, and internal platforms
Improved Operations
Live Log Streaming for Verifications
Verifications just got a lot more transparent.
Kargo v1.9 introduces live log streaming for Verifications, allowing you to view job output while the verification is still running, instead of waiting until it completes.
This is especially useful for long-running jobs, making it easier to:
Track real-time progress
Understand what’s happening under the hood
Spot issues earlier and react faster
Generic Webhook Receiver
Kargo v1.9 adds support for a generic webhook receiver, allowing the Kargo API to accept and respond to arbitrary POST payloads.
This makes it possible to trigger Warehouse refreshes even when a repository or registry doesn’t emit a standard webhook payload, or when you’re driving updates from your own automation. Common use cases include:
Refreshing Warehouses for registries without native webhook support, such as Google Artifact Registry or Amazon ECR
Triggering refreshes from custom scripts, internal tooling, or bespoke CI systems
Integrating Kargo with systems that don’t conform to common webhook schemas
With this change, Kargo becomes significantly easier to integrate into heterogeneous environments, where not everything speaks a well-known webhook dialect, but you still want promotions to react automatically to new artifacts.
Configurable Image Metadata Caching
Kargo v1.9 introduces optional support for caching container image metadata by tag using a new cacheByTag: true Warehouse setting.
By default, Kargo is very conservative: it continuously checks image tags to detect when a tag’s meaning has changed (for example, if an image is re-pushed to an existing tag). When this happens, Kargo correctly generates new Freight, but this correctness comes with a performance cost, especially for large or frequently polled image repositories.
For teams that use immutable image registries, or that can guarantee image tags are never overwritten, tag-based caching offers a significant performance win. With cacheByTag enabled, Kargo avoids unnecessary metadata re-fetches, reducing registry load and speeding up Warehouse refreshes.
This option gives operators a clear tradeoff:
Maximum correctness with the default behavior
Improved performance when immutability guarantees are in place
Importantly, this feature is opt-in, so existing behavior remains unchanged unless you explicitly enable it.
Enhanced Flexibility
Argo CD Label-Based Application Selection
The argocd-update promotion step now supports selecting Argo CD Applications by label, rather than requiring exact application names.
This is a big win for teams using ApplicationSets or managing dynamic environments where applications are frequently created or removed.
Learn more in the docs:
https://docs.kargo.io/user-guide/reference-docs/promotion-steps/argocd-update
Alternative Expression Delimiters
Kargo v1.9 adds support for alternative expression delimiters: ${% and %}.
This is especially useful in situations where the literal sequence }} needs to appear inside an expression without being interpreted — or when embedding Kargo expressions inside other templating systems, such as Helm charts, that already rely on {{ }}.
By allowing you to choose a different delimiter, Kargo makes it easier to compose complex templates without escaping gymnastics or accidental interpolation, resulting in clearer and more maintainable configurations.
Additional Improvements
The features above are just the highlights. Kargo v1.9 includes many additional improvements, bug fixes, and smaller enhancements that didn’t make this post but collectively make Kargo faster, more reliable, and easier to operate at scale.
For the complete list of changes, including detailed upgrade notes, be sure to check out the full v1.9 release notes.
👉 https://github.com/akuity/kargo/releases/tag/v1.9.0
Interested in Kargo Enterprise? Book a personalized demo today.
Just Getting Started with Kargo?
Here are some helpful resources:
Take the Kargo Quick Start Guide (Hands-on Course)
Subscribe to the GitOps Newsletter for ongoing updates

