New to Kestra?
Use blueprints to kickstart your first workflows.
Use the system.readOnly system label in Kestra to lock production and CI/CD-managed flows against UI edits while keeping execution fully enabled.
id: system-readonly-label
namespace: company.team
labels:
system.readOnly: "true"
tasks:
- id: log
type: io.kestra.plugin.core.log.Log
message: Hello from a read-only flow!
Protect critical Kestra workflows from accidental UI changes by setting the built-in system.readOnly system label to true. Once applied, the flow can still execute, be triggered, and emit logs, but the editor in the Kestra UI blocks any modification. This is essential for production pipelines deployed through GitOps, CI/CD, or Terraform, where the source of truth lives in a Git repository and ad hoc UI edits would silently drift from version control.
This is a minimal example flow that demonstrates the read only behavior:
system.readOnly: "true" at the top level. Kestra recognizes the system. label prefix as a reserved namespace for platform behaviors.io.kestra.plugin.core.log.Log task prints Hello from a read-only flow! so you can confirm execution still works after the lock is applied.To unlock the flow, remove the system.readOnly label from the YAML in your Git repository and redeploy.
System labels like system.readOnly are a Kestra-native feature that no external scheduler offers, because the lock lives inside the flow definition itself rather than in a separate access control layer. Combined with Kestra's declarative YAML, event triggers, automatic retries, and full execution lineage, you get a single source of truth in Git plus runtime safety in the UI. RBAC controls who can deploy; the system.readOnly label controls what can be edited in place, even by users with broad permissions.
This blueprint uses no secrets. The system.readOnly label is a flow-level setting, not a credential.
namespace to match your environment, for example company.production.log task still runs.system.readOnly with other system labels such as system.disabled to fully pause a flow.