Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.
Drift Actions is not enabled by default on any plan. To turn it on for your organization, contact your account manager.
Drift detection tells you which environments have drifted. Drift Actions tells you why, across your whole fleet, and lets you fix one root cause everywhere at once. A provider upgrade that drifted 40 environments is one row, not 40.
Where to find it
Organization menu > Actions > Drifts covers every project you can access.
Project menu > Drifts covers a single project.
The navigation item is hidden if Drift Actions is not enabled for your organization, or if you do not have the View Drift Cause permission.
Permissions
View Drift Cause permission:
Open the Drifts page and see causes
Run Apply permission on each affected environment:
Fix by redeploying
Edit Environment Settings permission on each affected environment:
Ignore and un-ignore a cause
Both actions run only on the environments you are permitted to act on. The confirmation modal reports how many were left out.
How causes group
A cause is identified by the destination of a change, not by the transition. A fleet mid-upgrade to aws 2.2 is one cause, whether an environment came from 2.0 or 2.1.
Cause
Summary shown in the worklist
Severity
Unmanaged Change
Resource type and path, changed or deleted outside env zero
Warning
Unapplied Commit
Commit <hash> not applied
Warning
Provider Version Change
Provider name and detected version
Info
Module Version Change
Module name and detected version
Info
Variable Change
Variable name, whether it was added, removed or changed, its scope and type
Info
State Modified
Who modified the state, and whether by a remote apply, a task, or an apply by comment
Info
Grouping is coarser than it looks in three cases:
Variable changes group on the variable, not its value. Two environments given different new values for the same variable are one cause.
Unmanaged changes group on the resource, not the attribute. Index segments are stripped, so aws_instance.web[0] and aws_instance.web[1] are one cause, as are a tag change in January and a security group change in March.
State Modified is reported only when env zero found the deployment that changed the state.
Variable values are never shown on this page. env zero does not store or serve them for this feature. A row tells you which variable changed, in which scope, and how, never what it changed to. For before and after values, open that environment’s drift detection.
Read the worklist
One row per cause, sorted by priority. The columns are Priority, Cause, Summary, Blast radius (environments and projects affected), Age (days since the cause was first seen, shown as <1d on the first day, hover for when it was last detected), and Actions. Filter by cause type and project, or search by subject.Expand a row for the affected environments, grouped by project, and What drifted: the commit, the provider or module and its detected version, the variable name, scope, scope ID, type and change, the resource type and path, or who changed the state and how.Five cubes sit above the worklist: Open causes, Aged over 7d, Detection enabled, Detection broken, and Median to close. Each counts only what your project access lets you see, so none of them is an organization-wide total.Detection enabled measures configuration, not coverage. An environment can have detection enabled and never have been scanned. Median to close covers the last 90 days and is a trend, not a service commitment, because env zero cannot prove what closed a cause and a cause that drifts again starts its clock over.
How priority is calculated
score = severity (Info = 1, Warning = 2) + 1 if the cause affects more than 5 environments + 1 if the cause was first seen more than 7 days ago
Severity
No escalation
One escalation
Both escalations
Info
Low
Medium
High
Warning
Medium
High
Critical
Each escalation adds at most 1, so a cause first seen 90 days ago scores the same as one first seen 8 days ago. Hover the priority badge to see the derivation for that row.
Priority is calculated per viewer and is never stored. The environment count that feeds it is narrowed by your project permissions, so two people can correctly see different priorities for the same cause.
Fix by redeploying
1
Select Fix by redeploying
The confirmation modal lists every environment the action will run on, and how many affected environments were excluded because you cannot deploy them.
2
Select Trigger deployments
env zero triggers a remediation deployment in each listed environment, redeploying your code so the cloud matches it.
3
Wait for detection to confirm
Deployments run asynchronously. The cause leaves the worklist once they complete and the next drift detection run confirms it is gone.
This triggers real deployments in every listed environment. There is no partial selection: the action runs on every environment in the group you are permitted to deploy. The button stays disabled until the whole batch has been sent.
Ignore a cause
Select Ignore on the row, then Ignore this cause in the confirmation modal. Use this for accepted drift you do not intend to fix.
Ignoring never expires and applies per environment. It does not silence the cause anywhere else, and if a new environment develops the same cause, the row returns for that environment. For unmanaged changes, ignoring is keyed on the resource, so it also hides later, unrelated changes to that resource.
To undo, turn on Show ignored and select Un-ignore. The cause reappears after the next drift detection run, about 24 hours, if the drift is still there, and its age restarts from that appearance. Environments whose settings you cannot change stay ignored.
When drift detection fails
If drift detection failed on its last run for any environment you can see, a banner appears above the worklist and cannot be dismissed. Those environments contribute no causes, so the worklist is incomplete by that many environments. This is a detection failure, not drift. Expand the banner to list them, up to the first 100.
Empty states
Drift detection is not enabled appears when none of the environments you can see are monitored. A project’s drift detection policy applies only to environments created after you enable it, so enable drift detection in each existing environment’s scheduling settings to cover it.No drift detected means env zero found no drift causes, not that every environment was scanned. Environments that have never been scanned look the same. Check the Detection enabled cube for how much of your fleet has detection turned on.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"env zero docs","colors":{"primary":"#000000","light":"#D2F740"},"logo":{"light":"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=6349fff9147169f2120c89694f47cbc0","dark":"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-dark-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=3017a6fc552076ce1aa60a773f7cab5c"},"favicon":"https://mintcdn.com/envzero-b61043c8/tSDpnsOW7stD0Hxu/favicon.svg?fit=max\u0026auto=format\u0026n=tSDpnsOW7stD0Hxu\u0026q=85\u0026s=e7c3f9cd1d8663c44ed8c059f5c4e2cb","icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"envzero-b61043c8","hasAudioNarration":false,"actualSubdomain":"envzero-b61043c8","customDomains":["docs.envzero.com"],"gitSource":{"type":"github","owner":"env0","repo":"env-zero-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af58ddd04140d5ce9d60696","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"API reference","count":385},{"language":"default","tag":"Guides","count":218},{"language":"default","tag":"Changelog","count":122},{"language":"default","tag":"Configuration","count":57},{"language":"default","tag":"Cloud Compass","count":46},{"language":"default","tag":"ACCESS \u0026 IDENTITY","count":43},{"language":"default","tag":"Environments","count":40},{"language":"default","tag":"2023","count":36},{"language":"default","tag":"ENVIRONMENTS \u0026 DEPLOYMENTS","count":32},{"language":"default","tag":"2024","count":28}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"docs-styles.css","content":"#page-context-menu{button {\n\t\tborder-radius: 0px;\n\t\tbackground-color: light-dark(#D2F740, #0C0C0B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:hover {\n\t\tbackground-color: light-dark(#B8E500, #3A3A38);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:active {\n\t\tbackground-color: light-dark(#ADDC06, #4D4E4B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}}.tryit-button{border-radius:0px;background-color:light-dark(#D2F740, #0C0C0B);color:light-dark(#000000, #FFFFFF);:hover {\n\t\tbackground-color: light-dark(#B8E500, #3A3A38);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\t:active {\n\t\tbackground-color: light-dark(#ADDC06, #4D4E4B);\n\t\tcolor: light-dark(#000000, #FFFFFF);\n\t}\n\n\tsvg {\n\t\tbackground-color: light-dark(#000000, #FFFFFF);\n\t}}.card{border-radius:0px;border-style:dashed}.accordion-group{border-radius:0px;border-style:dashed}#footer{display:none}.link{color:light-dark(black, white)!important;border-bottom-color:light-dark(#ADDC06, #D2F740)}"}],"page":{"pagePath":"guides/admin-guide/environments/drift-detection/drift-actions","slug":"/guides/admin-guide/environments/drift-detection/drift-actions","pageMetadata":{"title":"Drift Actions","slug":"drift-actions","description":"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.","keywords":["drift actions","drifts page","drift root cause","fix drift","bulk drift remediation","blast radius","drift priority","ignore drift cause"],"href":"/guides/admin-guide/environments/drift-detection/drift-actions"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Step,Steps,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsx(_components.p,{children:`Drift Actions is not enabled by default on any plan. To turn it on for your organization, contact your account manager.`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/guides/admin-guide/environments/drift-detection`,children:`Drift detection`}),` tells you which environments have drifted. Drift Actions tells you why, across your whole fleet, and lets you fix one root cause everywhere at once. A provider upgrade that drifted 40 environments is one row, not 40.`]}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-find-it`,children:`Where to find it`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Organization menu > Actions > Drifts`}),` covers every project you can access.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Project menu > Drifts`}),` covers a single project.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The navigation item is hidden if Drift Actions is not enabled for your organization, or if you do not have the View Drift Cause permission.`}),`\n`,_jsx(Heading,{level:`2`,id:`permissions`,children:`Permissions`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`View Drift Cause permission:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Open the Drifts page and see causes`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Run Apply permission`}),` on each affected environment:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix by redeploying`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Edit Environment Settings permission`}),` on each affected environment:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Ignore and un-ignore a cause`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Both actions run only on the environments you are permitted to act on. The confirmation modal reports how many were left out.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-causes-group`,children:`How causes group`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.a,{href:`/guides/admin-guide/environments/drift-detection/drift-cause#drift-cause-analysis`,children:`cause`}),` is identified by the destination of a change, not by the transition. A fleet mid-upgrade to `,_jsx(_components.code,{children:`aws 2.2`}),` is one cause, whether an environment came from `,_jsx(_components.code,{children:`2.0`}),` or `,_jsx(_components.code,{children:`2.1`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Cause`}),_jsx(_components.th,{children:`Summary shown in the worklist`}),_jsx(_components.th,{children:`Severity`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Unmanaged Change`}),_jsx(_components.td,{children:`Resource type and path, changed or deleted outside env zero`}),_jsx(_components.td,{children:`Warning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Unapplied Commit`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Commit \u003chash> not applied`})}),_jsx(_components.td,{children:`Warning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Provider Version Change`}),_jsx(_components.td,{children:`Provider name and detected version`}),_jsx(_components.td,{children:`Info`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Module Version Change`}),_jsx(_components.td,{children:`Module name and detected version`}),_jsx(_components.td,{children:`Info`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Variable Change`}),_jsx(_components.td,{children:`Variable name, whether it was added, removed or changed, its scope and type`}),_jsx(_components.td,{children:`Info`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`State Modified`}),_jsx(_components.td,{children:`Who modified the state, and whether by a remote apply, a task, or an apply by comment`}),_jsx(_components.td,{children:`Info`})]})]})]}),`\n`,_jsx(_components.p,{children:`Grouping is coarser than it looks in three cases:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Variable changes group on the variable, not its value. Two environments given different new values for the same variable are one cause.`}),`\n`,_jsxs(_components.li,{children:[`Unmanaged changes group on the resource, not the attribute. Index segments are stripped, so `,_jsx(_components.code,{children:`aws_instance.web[0]`}),` and `,_jsx(_components.code,{children:`aws_instance.web[1]`}),` are one cause, as are a tag change in January and a security group change in March.`]}),`\n`,_jsx(_components.li,{children:`State Modified is reported only when env zero found the deployment that changed the state.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Variable values are never shown on this page. env zero does not store or serve them for this feature. A row tells you which variable changed, in which scope, and how, never what it changed to. For before and after values, open that environment’s drift detection.`})}),`\n`,_jsx(Heading,{level:`2`,id:`read-the-worklist`,children:`Read the worklist`}),`\n`,_jsxs(_components.p,{children:[`One row per cause, sorted by priority. The columns are `,_jsx(_components.strong,{children:`Priority`}),`, `,_jsx(_components.strong,{children:`Cause`}),`, `,_jsx(_components.strong,{children:`Summary`}),`, `,_jsx(_components.strong,{children:`Blast radius`}),` (environments and projects affected), `,_jsx(_components.strong,{children:`Age`}),` (days since the cause was first seen, shown as `,_jsx(_components.code,{children:`\u003c1d`}),` on the first day, hover for when it was last detected), and `,_jsx(_components.strong,{children:`Actions`}),`. Filter by cause type and project, or search by subject.`]}),`\n`,_jsxs(_components.p,{children:[`Expand a row for the affected environments, grouped by project, and `,_jsx(_components.strong,{children:`What drifted`}),`: the commit, the provider or module and its detected version, the variable name, scope, scope ID, type and change, the resource type and path, or who changed the state and how.`]}),`\n`,_jsxs(_components.p,{children:[`Five cubes sit above the worklist: `,_jsx(_components.strong,{children:`Open causes`}),`, `,_jsx(_components.strong,{children:`Aged over 7d`}),`, `,_jsx(_components.strong,{children:`Detection enabled`}),`, `,_jsx(_components.strong,{children:`Detection broken`}),`, and `,_jsx(_components.strong,{children:`Median to close`}),`. Each counts only what your project access lets you see, so none of them is an organization-wide total.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Detection enabled`}),` measures configuration, not coverage. An environment can have detection enabled and never have been scanned. `,_jsx(_components.strong,{children:`Median to close`}),` covers the last 90 days and is a trend, not a service commitment, because env zero cannot prove what closed a cause and a cause that drifts again starts its clock over.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-priority-is-calculated`,children:`How priority is calculated`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`score = severity (Info = 1, Warning = 2)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` + 1 if the cause affects more than 5 environments`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` + 1 if the cause was first seen more than 7 days ago`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Severity`}),_jsx(_components.th,{children:`No escalation`}),_jsx(_components.th,{children:`One escalation`}),_jsx(_components.th,{children:`Both escalations`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Info`}),_jsx(_components.td,{children:`Low`}),_jsx(_components.td,{children:`Medium`}),_jsx(_components.td,{children:`High`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Warning`}),_jsx(_components.td,{children:`Medium`}),_jsx(_components.td,{children:`High`}),_jsx(_components.td,{children:`Critical`})]})]})]}),`\n`,_jsx(_components.p,{children:`Each escalation adds at most 1, so a cause first seen 90 days ago scores the same as one first seen 8 days ago. Hover the priority badge to see the derivation for that row.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Priority is calculated per viewer and is never stored. The environment count that feeds it is narrowed by your project permissions, so two people can correctly see different priorities for the same cause.`})}),`\n`,_jsx(Heading,{level:`2`,id:`fix-by-redeploying`,children:`Fix by redeploying`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Select Fix by redeploying`,children:_jsx(_components.p,{children:`The confirmation modal lists every environment the action will run on, and how many affected environments were excluded because you cannot deploy them.`})}),_jsx(Step,{title:`Select Trigger deployments`,children:_jsx(_components.p,{children:`env zero triggers a remediation deployment in each listed environment, redeploying your code so the cloud matches it.`})}),_jsx(Step,{title:`Wait for detection to confirm`,children:_jsx(_components.p,{children:`Deployments run asynchronously. The cause leaves the worklist once they complete and the next drift detection run confirms it is gone.`})})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`This triggers real deployments in every listed environment. There is no partial selection: the action runs on every environment in the group you are permitted to deploy. The button stays disabled until the whole batch has been sent.`})}),`\n`,_jsx(Heading,{level:`2`,id:`ignore-a-cause`,children:`Ignore a cause`}),`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Ignore`}),` on the row, then `,_jsx(_components.strong,{children:`Ignore this cause`}),` in the confirmation modal. Use this for accepted drift you do not intend to fix.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Ignoring never expires and applies per environment. It does not silence the cause anywhere else, and if a new environment develops the same cause, the row returns for that environment. For unmanaged changes, ignoring is keyed on the resource, so it also hides later, unrelated changes to that resource.`})}),`\n`,_jsxs(_components.p,{children:[`To undo, turn on `,_jsx(_components.strong,{children:`Show ignored`}),` and select `,_jsx(_components.strong,{children:`Un-ignore`}),`. The cause reappears after the next drift detection run, about 24 hours, if the drift is still there, and its age restarts from that appearance. Environments whose settings you cannot change stay ignored.`]}),`\n`,_jsx(Heading,{level:`2`,id:`when-drift-detection-fails`,children:`When drift detection fails`}),`\n`,_jsx(_components.p,{children:`If drift detection failed on its last run for any environment you can see, a banner appears above the worklist and cannot be dismissed. Those environments contribute no causes, so the worklist is incomplete by that many environments. This is a detection failure, not drift. Expand the banner to list them, up to the first 100.`}),`\n`,_jsx(Heading,{level:`2`,id:`empty-states`,children:`Empty states`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Drift detection is not enabled`}),` appears when none of the environments you can see are monitored. A project’s `,_jsx(_components.a,{href:`/guides/policies-governance/drift-detection-policy`,children:`drift detection policy`}),` applies only to environments created after you enable it, so enable drift detection in each existing environment’s scheduling settings to cover it.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No drift detected`}),` means env zero found no drift causes, not that every environment was scanned. Environments that have never been scanned look the same. Check the `,_jsx(_components.strong,{children:`Detection enabled`}),` cube for how much of your fleet has detection turned on.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.p,{children:[`To have each environment fix its own drift as soon as it is detected, `,_jsx(_components.a,{href:`/guides/admin-guide/environments/drift-detection/automatic-drift-remediation#configuring-automatic-drift-remediation`,children:`configure automatic drift remediation`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Drift Actions","slug":"drift-actions","description":"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.","keywords":["drift actions","drifts page","drift root cause","fix drift","bulk drift remediation","blast radius","drift priority","ignore drift cause"],"href":"/guides/admin-guide/environments/drift-detection/drift-actions"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Where to find it","slug":"where-to-find-it","depth":2,"children":[]},{"title":"Permissions","slug":"permissions","depth":2,"children":[]},{"title":"How causes group","slug":"how-causes-group","depth":2,"children":[]},{"title":"Read the worklist","slug":"read-the-worklist","depth":2,"children":[]},{"title":"How priority is calculated","slug":"how-priority-is-calculated","depth":2,"children":[]},{"title":"Fix by redeploying","slug":"fix-by-redeploying","depth":2,"children":[]},{"title":"Ignore a cause","slug":"ignore-a-cause","depth":2,"children":[]},{"title":"When drift detection fails","slug":"when-drift-detection-fails","depth":2,"children":[]},{"title":"Empty states","slug":"empty-states","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/envzero-b61043c8/acfe5f113d987bc4/analytics.js","/_mintlify/custom/envzero-b61043c8/6e65effd4fa229eb/page-dates.js","/_mintlify/custom/envzero-b61043c8/05a202bfcfe4d650/schema.js"],"subdomain":"envzero-b61043c8","siteName":"env zero docs","title":"Drift Actions - env zero docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T13:09:57.631Z","originalFileLocation":"guides/admin-guide/environments/drift-detection/drift-actions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\">\u003cmeta data-mint-head name=\"application-name\" content=\"env zero docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Drift Actions - env zero docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"env zero docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://envzero-b61043c8.mintlify.site/_mintlify/api/og/v2?division=Drift+detection+%26+remediation\u0026amp;title=Drift+Actions\u0026amp;description=Group+drift+root+causes+across+environments+in+env+zero%2C+rank+them+by+blast+radius+and+age%2C+then+fix+or+ignore+a+cause+everywhere+at+once.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=e8bf3a606cd4f71d1541c9c4d4dea2e48c7af75762cf5dc3837a06e9eab2f914\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Drift Actions - env zero docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://envzero-b61043c8.mintlify.site/_mintlify/api/og/v2?division=Drift+detection+%26+remediation\u0026amp;title=Drift+Actions\u0026amp;description=Group+drift+root+causes+across+environments+in+env+zero%2C+rank+them+by+blast+radius+and+age%2C+then+fix+or+ignore+a+cause+everywhere+at+once.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=e8bf3a606cd4f71d1541c9c4d4dea2e48c7af75762cf5dc3837a06e9eab2f914\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/envzero-b61043c8/d__z1yG6n7HmXzQt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"env zero docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/admin-guide/environments/drift-detection/drift-actions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.envzero.com/#organization\",\"name\":\"env zero docs\",\"url\":\"https://docs.envzero.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/envzero-b61043c8/GWfARhdHeVhvtQPk/logo/logo-light-mode.svg?fit=max\u0026auto=format\u0026n=GWfARhdHeVhvtQPk\u0026q=85\u0026s=6349fff9147169f2120c89694f47cbc0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.envzero.com#website\",\"name\":\"env zero docs\",\"url\":\"https://docs.envzero.com\",\"publisher\":{\"@id\":\"https://docs.envzero.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions#webpage\",\"url\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions\",\"name\":\"Drift Actions\",\"description\":\"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\",\"dateModified\":\"2026-11-04T13:09:57.631Z\",\"isPartOf\":{\"@id\":\"https://docs.envzero.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"ENVIRONMENTS \u0026 DEPLOYMENTS\",\"item\":\"https://docs.envzero.com/guides/admin-guide/environments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Drift detection \u0026 remediation\",\"item\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Drift Actions\",\"item\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions#article\",\"headline\":\"Drift Actions\",\"name\":\"Drift Actions\",\"description\":\"Group drift root causes across environments in env zero, rank them by blast radius and age, then fix or ignore a cause everywhere at once.\",\"url\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.envzero.com/guides/admin-guide/environments/drift-detection/drift-actions#webpage\"},\"dateModified\":\"2026-11-04T13:09:57.631Z\",\"keywords\":\"drift actions, drifts page, drift root cause, fix drift, bulk drift remediation, blast radius, drift priority, ignore drift cause\",\"publisher\":{\"@id\":\"https://docs.envzero.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.envzero.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"env zero docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"env zero docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/admin-guide/environments/drift-detection/drift-actions.md","siteName":"env zero docs","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"group":"GET STARTED","pages":[{"title":"Overview: What is env zero?","href":""},{"title":"Product homepage","href":"/guides/admin-guide/homepage"},{"group":"Quick start","pages":[{"title":"Getting Started with env zero","sidebarTitle":"Overview","href":"/guides/getting-started/getting-started"},{"title":"Create your organization","href":"/guides/getting-started/create-your-organization"},{"title":"Connect your Git repository","sidebarTitle":"Connect your Git repository (optional)","href":"/guides/getting-started/connect-your-vcs"},{"title":"Connect your cloud account","href":"/guides/getting-started/connect-your-cloud-account"},{"title":"Create your first template","href":"/guides/getting-started/create-your-first-template"},{"title":"Deploy your first environment","href":"/guides/getting-started/running-your-first-environment"}]},{"group":"Migrate from Terraform Cloud","pages":[{"title":"Migrate from Terraform Cloud","sidebarTitle":"Overview","href":"/guides/admin-guide/tfc-migration"},{"title":"Connect and scan","href":"/guides/admin-guide/tfc-migration/connect-and-scan"},{"title":"Resolve issues","href":"/guides/admin-guide/tfc-migration/resolve-issues"},{"title":"Review and migrate","href":"/guides/admin-guide/tfc-migration/review-and-migrate"},{"title":"Go live","href":"/guides/admin-guide/tfc-migration/go-live"},{"title":"Troubleshooting","sidebarTitle":"TFC migration troubleshooting","href":"/guides/admin-guide/tfc-migration/troubleshooting"}]},{"group":"Plan your setup","pages":[{"title":"Plan your setup","href":"/guides/getting-started/plan-your-setup"}]},{"group":"Reference","pages":[{"title":"Supported platforms","href":"/guides/getting-started/supported-platforms"},{"title":"Glossary","href":"/guides/getting-started/glossary"}]}]},{"group":"ENVIRONMENTS \u0026 DEPLOYMENTS","pages":[{"group":"Creating \u0026 managing environments","pages":[{"title":"Environment overview","href":"/guides/admin-guide/environments"},{"title":"Creating a new environment","href":"/guides/admin-guide/environments/setting-up-a-new-environment"},{"title":"Environment access","href":"/guides/admin-guide/environments/access"},{"title":"Managing bulk operations","href":"/guides/admin-guide/environments/bulk-operations"},{"title":"Environment Tags","href":"/guides/admin-guide/environments/tags"},{"title":"Using continuous deployment","href":"/guides/admin-guide/environments/continuous-deployment"},{"title":"Locking environments","href":"/guides/admin-guide/environments/environment-locking"},{"title":"Performing targeted deployments","href":"/guides/admin-guide/environments/targeted-deployments"},{"title":"Configure workflow triggers","href":"/guides/admin-guide/environments/workflow-triggers"},{"title":"Additional deployment controls","href":"/guides/admin-guide/additional-controls"},{"title":"AI-powered summarization and error insights","href":"/guides/admin-guide/environments/ai-powered-summarization-and-error-insights"},{"title":"Moving environments","href":"/guides/admin-guide/environments/move-environment"},{"title":"Plan and apply via PR comments","href":"/guides/admin-guide/environments/plan-and-apply-from-pr-comments"},{"title":"Running plan on pull requests","href":"/guides/admin-guide/environments/plan-on-pull-request"}]},{"group":"Workflows","pages":[{"title":"Workflow overview","href":"/guides/admin-guide/workflows"},{"title":"Creating a new workflow","href":"/guides/admin-guide/workflows/create-a-new-workflow"},{"title":"Partial workflow deployment","href":"/guides/admin-guide/workflows/workflow-partial-deployment"},{"title":"Workflow file reference","href":"/guides/admin-guide/workflows/workflow-file-reference"},{"title":"Workflow file JSON schema","href":"/guides/admin-guide/workflows/workflow-file-json-schema"},{"title":"Terraform provider settings for sub-environments","sidebarTitle":"Terraform provider settings","href":"/guides/admin-guide/workflows/terraform-provider-sub-environment-settings"}]},{"group":"Scheduling \u0026 automation","pages":[{"title":"Deployment scheduling","href":"/guides/admin-guide/environments/scheduling"},{"title":"Running ad hoc tasks","href":"/guides/admin-guide/environments/ad-hoc-tasks"}]},{"group":"Environment discovery","pages":[{"title":"Environment discovery overview","href":"/guides/admin-guide/environment-discovery"},{"title":"Discovery by file","href":"/guides/admin-guide/environment-discovery/discovery-by-file"},{"title":"Auto-create environments from pull requests","sidebarTitle":"Auto-creating environments from pull requests","href":"/guides/admin-guide/environment-discovery/automatic-environment-creation-from-pull-request"},{"title":"Import external environments into env zero","sidebarTitle":"Importing external environments into env zero","href":"/guides/admin-guide/environment-discovery/onboarding-import-external-environments-into-env-zero"}]},{"group":"Drift detection \u0026 remediation","pages":[{"title":"Drift Detection","href":"/guides/admin-guide/environments/drift-detection"},{"title":"Analyze drift cause","href":"/guides/admin-guide/environments/drift-detection/drift-cause"},{"title":"Remediate Drift","description":"Automatically or manually remediate infrastructure drift in env zero by deploying code from VCS or creating pull requests for manual cloud changes.","href":"/guides/admin-guide/environments/drift-detection/automatic-drift-remediation"},{"title":"Drift Actions","href":"/guides/admin-guide/environments/drift-detection/drift-actions"},{"title":"Drift detection policy","description":"Configure drift detection scheduling for env zero projects and set automatic remediation options: redeploy from VCS or create a pull request on detected drift.","href":"/guides/policies-governance/drift-detection-policy"}]},{"group":"Promotion strategies","pages":[{"title":"Environment promotion strategies","href":"/guides/admin-guide/environments/promotion-strategies"}]}]},{"group":"TEMPLATES \u0026 IaC TOOLS","pages":[{"group":"Managing templates","pages":[{"title":"Template overview","href":"/guides/admin-guide/templates"},{"title":"Managing IaC binary versions","href":"/guides/admin-guide/templates/iac-binaries-versions"},{"title":"Using self-hosted VCS","href":"/guides/admin-guide/templates/self-hosted-vcs"}]},{"group":"Version control integration","pages":[{"title":"Git and VCS integration","href":"/guides/admin-guide/manage-vcs"},{"group":"GitHub integration","pages":[{"title":"Standard GitHub integration","href":"/guides/admin-guide/templates/github-templates"},{"title":"GitHub Enterprise integration","href":"/guides/admin-guide/templates/github-enterprise-integration"}]},{"group":"GitLab integration","pages":[{"title":"Standard GitLab integration","href":"/guides/admin-guide/templates/gitlab-integration"},{"title":"GitLab Enterprise integration","href":"/guides/admin-guide/templates/gitlab-enterprise-integration"}]},{"group":"Bitbucket integration","pages":[{"title":"Standard Bitbucket integration","href":"/guides/admin-guide/templates/bitbucket-integration"},{"title":"Bitbucket Server integration","href":"/guides/admin-guide/templates/bitbucket-server-integration"}]},{"title":"Azure DevOps integration","href":"/guides/admin-guide/templates/azure-devops-integration"}]},{"group":"IaC ecosystem","pages":[{"title":"OpenTofu","href":"/guides/admin-guide/templates/opentofu"},{"title":"Terraform","href":"/guides/admin-guide/templates/terraform"},{"title":"Pulumi integration","href":"/guides/admin-guide/templates/pulumi"},{"title":"AWS CloudFormation integration","href":"/guides/admin-guide/templates/cloudformation"},{"title":"Kubernetes (K8s) integration","href":"/guides/admin-guide/templates/k8s"},{"title":"Helm integration","href":"/guides/admin-guide/templates/helm"},{"title":"Ansible integration","href":"/guides/admin-guide/templates/ansible"},{"title":"Terragrunt integration","href":"/guides/admin-guide/templates/terragrunt"}]},{"group":"Open source projects","pages":[{"title":"OpenTofu project","href":"/guides/community-and-resources/community-and-open-source/opentofu"},{"title":"Terratag project","href":"/guides/community-and-resources/community-and-open-source/terratag"}]},{"group":"Repository structure","pages":[{"title":"Repository structure","href":"/guides/admin-guide/templates/repository-structure"}]},{"group":"Module \u0026 provider registries","pages":[{"title":"Private registry","href":"/guides/admin-guide/private-registry"},{"group":"Modules registry","pages":[{"title":"Module overview","href":"/guides/admin-guide/private-registry/modules"},{"title":"Using modules","href":"/guides/admin-guide/private-registry/modules/module-usage"},{"title":"Testing modules in CI","href":"/guides/admin-guide/private-registry/modules/modules-continuous-integration-testing"}]},{"title":"Providers overview","href":"/guides/admin-guide/private-registry/providers"}]}]},{"group":"PLATFORM CONFIGURATION","pages":[{"group":"Variables \u0026 secrets","pages":[{"title":"Managing variables","href":"/guides/admin-guide/variables"},{"title":"Manage access tokens","href":"/guides/admin-guide/variables/access-tokens"},{"title":"Handling common errors","href":"/guides/admin-guide/variables/common-errors"},{"title":"Working with environment outputs","href":"/guides/admin-guide/variables/environment-outputs"},{"title":"Managing SSH keys","href":"/guides/admin-guide/variables/ssh-keys"},{"title":"Using variable sets","href":"/guides/admin-guide/variables/variable-sets"},{"title":"Managing workflow variables","href":"/guides/admin-guide/variables/workflow-variables"}]},{"group":"Custom flows","pages":[{"title":"Custom flows overview","href":"/guides/admin-guide/custom-flows"},{"title":"Project-level custom flow","href":"/guides/admin-guide/custom-flows/project-level-custom-flow"},{"title":"Custom flow schema (v2)","href":"/guides/admin-guide/custom-flows/version-2-schema"}]},{"group":"State management","pages":[{"title":"Remote backend","href":"/guides/admin-guide/remote-backend"},{"title":"Using self-hosted remote state","href":"/guides/admin-guide/remote-backend/self-hosted-remote-state"},{"title":"Authenticate locally","href":"/guides/admin-guide/remote-backend/login"},{"title":"Running remote plan","href":"/guides/admin-guide/remote-backend/remote-plan"},{"title":"Running remote apply","href":"/guides/admin-guide/remote-backend/remote-apply"},{"title":"Integrate with Terraform Cloud Remote Backend","sidebarTitle":"Integrating with Terraform Cloud Remote Backend","href":"/guides/admin-guide/remote-backend/working-with-terraform-cloud-remote-backend"},{"group":"State migration \u0026 backend configuration","pages":[{"title":"Migrating State","href":"/guides/admin-guide/remote-backend/state-migration"},{"title":"Configuring state access control","href":"/guides/admin-guide/remote-backend/state-access-control"},{"title":"Remote state data source","href":"/guides/admin-guide/remote-backend/remote-state-data-source"}]}]},{"group":"Plugins","pages":[{"title":"Plugins overview","href":"/guides/integrations/plugins"},{"title":"Using the Checkov plugin","href":"/guides/integrations/plugins/checkov-plugin"},{"title":"Using the import variable plugin","href":"/guides/integrations/plugins/import-variable-plugin"},{"title":"Using the OPA plugin","href":"/guides/integrations/plugins/opa-plugin"},{"title":"Terragrunt module detection","href":"/guides/integrations/plugins/terragrunt-modules-detection"},{"title":"Using the TFLint plugin","href":"/guides/integrations/plugins/tflint-plugin"},{"title":"Using the TFsec plugin","href":"/guides/integrations/plugins/tfsec-plugin"},{"title":"Using the Trivy plugin","href":"/guides/integrations/plugins/trivy-plugin"}]}]},{"group":"SELF-HOSTED AGENTS","pages":[{"group":"Getting started","pages":[{"title":"Self-hosted agents overview","href":"/guides/admin-guide/self-hosted-kubernetes-agent/overview"},{"title":"Self-hosted Kubernetes agent","href":"/guides/admin-guide/self-hosted-kubernetes-agent/self-hosted-kubernetes-agent"},{"title":"Install the agent with Terraform","href":"/guides/admin-guide/self-hosted-kubernetes-agent/terraform-bootstrap"},{"title":"Running a standalone Docker agent","href":"/guides/admin-guide/self-hosted-kubernetes-agent/standalone-docker-agent"}]},{"group":"Deployment image","pages":[{"title":"Configuring deployment image","href":"/guides/admin-guide/self-hosted-kubernetes-agent/deployment-image"},{"title":"Extending deployment image","href":"/guides/admin-guide/self-hosted-kubernetes-agent/extending-deployment-image"},{"title":"Changing user ID","href":"/guides/admin-guide/self-hosted-kubernetes-agent/using-a-custom-image-in-an-agent/change-user-id"},{"title":"Run Docker in custom flows","href":"/guides/admin-guide/self-hosted-kubernetes-agent/docker-in-custom-flows"}]},{"group":"Authentication","pages":[{"title":"Authenticating the agent on AWS EKS","href":"/guides/admin-guide/self-hosted-kubernetes-agent/authenticating-the-agent-on-aws-eks"},{"title":"Authenticating the agent on Azure AKS","href":"/guides/admin-guide/self-hosted-kubernetes-agent/authenticating-the-agent-on-azure-aks"}]},{"group":"Configuration","pages":[{"title":"Custom/optional configuration","href":"/guides/admin-guide/self-hosted-kubernetes-agent/custom-optional-configuration"},{"title":"Using cache with PVC","href":"/guides/admin-guide/self-hosted-kubernetes-agent/cache-with-pvc"},{"title":"Using custom CA certificates","href":"/guides/admin-guide/self-hosted-kubernetes-agent/custom-ca-certificates"},{"title":"Hosting deployment logs","href":"/guides/admin-guide/self-hosted-kubernetes-agent/hosting-the-deployment-logs"},{"title":"env zero Hosted Encrypted State","href":"/guides/admin-guide/self-hosted-kubernetes-agent/env-zero-hosted-encrypted-state"}]},{"group":"High availability \u0026 scaling","pages":[{"title":"HA/DR strategy for self-hosted agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/hadr-strategy-for-self-hosted-agents"},{"title":"Running multiple self-hosted agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/multiple-self-hosted-agents"},{"title":"Autoscaling self-hosted agents on Azure Container Apps","sidebarTitle":"Autoscaling on Azure Container Apps","href":"/guides/admin-guide/self-hosted-kubernetes-agent/autoscaling-on-azure-container-apps"},{"title":"Monitoring Self-Hosted Agents","href":"/guides/admin-guide/self-hosted-kubernetes-agent/self-hosted-agents-monitoring"}]},{"title":"Troubleshooting","sidebarTitle":"Self-hosted agent troubleshooting","href":"/guides/admin-guide/self-hosted-kubernetes-agent/troubleshooting"}]},{"group":"CLOUD MANAGEMENT","pages":[{"group":"Cloud resource management","pages":[{"title":"Cloud Compass","href":"/guides/cloud-compass/cloud-compass"},{"title":"Configure an AWS cloud account","href":"/guides/cloud-compass/cloud-compass/configure-cloud-accounts"},{"title":"Configure an Azure cloud account","href":"/guides/cloud-compass/cloud-compass/configure-an-azure-cloud-account"},{"title":"Configure a GCP cloud account","href":"/guides/cloud-compass/cloud-compass/configure-a-gcp-cloud-account"},{"title":"Link environments to Cloud Compass","sidebarTitle":"Linking environments to Cloud Compass resources","href":"/guides/cloud-compass/cloud-compass/linking-environments-to-cloud-compass-resources"}]},{"group":"Cloud insights","pages":[{"title":"Cloud Analyst","href":"/guides/cloud-analyst/cloud-analyst"},{"title":"AI chat interface","href":"/guides/cloud-analyst/cloud-analyst/ai-chat-interface"},{"title":"Dashboards","href":"/guides/cloud-analyst/cloud-analyst/dashboards"},{"title":"Explorer","href":"/guides/cloud-analyst/cloud-analyst/explorer"},{"title":"Insights","href":"/guides/cloud-analyst/cloud-analyst/insights"},{"title":"env zero model","href":"/guides/cloud-analyst/cloud-analyst/env-zero-model"}]},{"title":"env zero Context Layer","sidebarTitle":"Context Layer (CloudQuery)","href":"/guides/integrations/context-layer"}]},{"group":"GOVERNANCE \u0026 POLICIES","pages":[{"group":"Policies \u0026 safeguards","pages":[{"title":"Manage policies","href":"/guides/policies-governance/policies"},{"title":"Ready-to-use policies","href":"/guides/policies-governance/ready-to-use-policies"},{"title":"Enable env zero secrets","href":"/guides/policies-governance/allow-env0-secrets"},{"title":"Force remote backend","href":"/guides/policies-governance/force-remote-backend"}]},{"group":"Approval \u0026 deployment controls","pages":[{"title":"Manage approval policies","href":"/guides/policies-governance/approval-policies"},{"title":"Pin deployments to an approved revision","sidebarTitle":"Pin deployments to a revision","href":"/guides/policies-governance/pin-deployments-to-an-approved-revision"},{"title":"Enable destroy protection","href":"/guides/policies-governance/destroy-protection"},{"title":"Default auto-approve","href":"/guides/policies-governance/default-auto-approve"},{"title":"Deployment controls","href":"/guides/policies-governance/deployment-controls"}]},{"group":"Environment quotas \u0026 TTL settings","pages":[{"title":"Set environment limits","href":"/guides/policies-governance/environment-limits"},{"title":"Configure policy TTL","href":"/guides/policies-governance/policy-ttl"}]},{"group":"Cost management","pages":[{"title":"Estimate costs","href":"/guides/policies-governance/cost-estimation"},{"title":"Set budget notifications","href":"/guides/cost-monitoring/budget-notifications"},{"title":"Set cost monitoring","href":"/guides/cost-monitoring/cost-monitoring"},{"group":"Cloud provider cost setup","pages":[{"title":"Configure AWS costs","href":"/guides/cost-monitoring/aws-costs"},{"title":"Configure Azure costs","href":"/guides/cost-monitoring/setup-azure-costs"},{"title":"Configure GCP costs","href":"/guides/cost-monitoring/gcp-costs"}]}]},{"group":"Code Optimizer","pages":[{"title":"Code Optimizer overview","href":"/guides/policies-governance/code-optimizer/overview"},{"title":"Setup \u0026 prerequisites","href":"/guides/policies-governance/code-optimizer/setup"},{"title":"Scanning your code","href":"/guides/policies-governance/code-optimizer/scanning"},{"title":"Generating \u0026 applying fixes","href":"/guides/policies-governance/code-optimizer/fixes"}]}]},{"group":"ACCESS \u0026 IDENTITY","pages":[{"group":"User, role \u0026 team management","pages":[{"title":"Manage users","href":"/guides/admin-guide/user-role-and-team-management/user-management"},{"title":"Manage teams","href":"/guides/admin-guide/user-role-and-team-management/teams"},{"title":"Role-based access control (RBAC)","href":"/guides/admin-guide/user-role-and-team-management/rbac"},{"title":"Default roles","href":"/guides/admin-guide/user-role-and-team-management/default-roles"},{"title":"Custom roles","href":"/guides/admin-guide/user-role-and-team-management/custom-roles"},{"title":"Assigning roles","href":"/guides/admin-guide/user-role-and-team-management/role-assignment"},{"title":"User API keys","sidebarTitle":"Admin API Keys","href":"/guides/admin-guide/user-role-and-team-management/api-keys"}]},{"group":"Organization \u0026 project settings","pages":[{"title":"Manage organizations","href":"/guides/admin-guide/organizations"},{"title":"Manage projects","href":"/guides/admin-guide/projects"},{"title":"Manage sub-projects","href":"/guides/admin-guide/projects/sub-projects"}]},{"group":"SSO \u0026 identity","pages":[{"title":"Self-service SSO integration","href":"/guides/sso-integrations/self-service-sso"},{"title":"Self-service SAML setup","href":"/guides/sso-integrations/self-service-saml"},{"title":"Sync roles \u0026 groups from your IdP","href":"/guides/sso-integrations/importing-roles-or-groups-from-your-identity-provider"},{"group":"SCIM provisioning","pages":[{"title":"SCIM provisioning","href":"/guides/sso-integrations/scim-provisioning"},{"title":"SCIM provisioning with Okta","href":"/guides/sso-integrations/scim-provisioning-okta"},{"title":"SCIM provisioning with Entra ID","href":"/guides/sso-integrations/scim-provisioning-entra-id"}]},{"group":"Identity provider guides","pages":[{"title":"Azure Active Directory integration","href":"/guides/sso-integrations/self-service-azure-ad"},{"title":"AWS Single Sign-On integration","href":"/guides/sso-integrations/aws-single-sign-on"},{"title":"Google Workspace integration","href":"/guides/sso-integrations/google-workspace"},{"title":"JumpCloud integration","href":"/guides/sso-integrations/jumpcloud"},{"title":"Keycloak integration","href":"/guides/sso-integrations/keycloak"},{"title":"Okta integration","href":"/guides/sso-integrations/okta-integration"},{"title":"OneLogin integration","href":"/guides/sso-integrations/onelogin"},{"title":"VMware Workspace ONE integration","href":"/guides/sso-integrations/vmware-workspace-one"}]}]},{"group":"OIDC integrations","pages":[{"title":"General OIDC integrations","href":"/guides/integrations/oidc-integrations"},{"title":"Retrieve OIDC subject identifier","href":"/guides/integrations/oidc-integrations/oidc-retrieving-your-subject-identifier"},{"title":"OIDC for AWS","href":"/guides/integrations/oidc-integrations/oidc-with-aws"},{"title":"OIDC for Azure","href":"/guides/integrations/oidc-integrations/oidc-with-azure"},{"title":"OIDC for GCP","href":"/guides/integrations/oidc-integrations/oidc-with-google-cloud-platform"},{"title":"OIDC for Vault","href":"/guides/integrations/oidc-integrations/oidc-with-vault"}]},{"group":"Auditing \u0026 transparency","pages":[{"title":"Monitoring dashboards","href":"/guides/admin-guide/dashboards"},{"group":"Forwarding logs","pages":[{"title":"Logs forwarding overview","href":"/guides/integrations/logs-forwarding"},{"title":"Amazon CloudWatch","href":"/guides/integrations/logs-forwarding/cloudwatch"},{"title":"Amazon S3 logs","href":"/guides/integrations/logs-forwarding/s3"},{"title":"Coralogix logs","href":"/guides/integrations/logs-forwarding/coralogix"},{"title":"Datadog logs","href":"/guides/integrations/logs-forwarding/datadog"},{"title":"Dynatrace logs","href":"/guides/integrations/logs-forwarding/dynatrace"},{"title":"Google Cloud Logging","href":"/guides/integrations/logs-forwarding/gcp-logging"},{"title":"Grafana Loki logs","href":"/guides/integrations/logs-forwarding/grafana-loki"},{"title":"Logz.io logs","href":"/guides/integrations/logs-forwarding/logzio"},{"title":"New Relic logs","href":"/guides/integrations/logs-forwarding/new-relic"},{"title":"Splunk logs","href":"/guides/integrations/logs-forwarding/splunk"},{"title":"Sumo Logic logs","href":"/guides/integrations/logs-forwarding/sumologic"}]}]}]},{"group":"SECURITY \u0026 COMPLIANCE","pages":[{"title":"Security overview","href":"/guides/overview/security-overview"},{"title":"IP allowlisting","href":"/guides/overview/security-overview/ip-allowlisting"},{"title":"View audit logs","href":"/guides/admin-guide/audit-logs"},{"title":"IP addresses","href":"/guides/overview/security-overview/ip-addresses"}]},{"group":"INTEGRATIONS \u0026 DEVELOPER TOOLS","pages":[{"group":"Notifications","pages":[{"title":"Manage notifications","href":"/guides/integrations/notifications"},{"title":"Microsoft Teams integration","href":"/guides/integrations/notifications/microsoft-teams"},{"title":"Webhook notifications","href":"/guides/integrations/notifications/webhooks"}]},{"group":"Internal developer platforms","pages":[{"title":"Backstage integration","href":"/guides/integrations/internal-developer-platforms/backstage"}]},{"group":"CLI \u0026 API access","pages":[{"title":"env zero CLI Tool","sidebarTitle":"CLI","href":"/guides/community-and-resources/support-and-help/env-zero-cli"},{"title":"env zero CLI command reference","sidebarTitle":"Command reference","href":"/guides/community-and-resources/support-and-help/env-zero-cli/command-reference"},{"title":"Deploy workflows with the env zero CLI","sidebarTitle":"Deploy workflows","href":"/guides/community-and-resources/support-and-help/env-zero-cli/workflows"},{"title":"Troubleshoot the env zero CLI","sidebarTitle":"Troubleshooting","href":"/guides/community-and-resources/support-and-help/env-zero-cli/troubleshooting"},{"title":"env zero API access","sidebarTitle":"API access","href":"/guides/community-and-resources/support-and-help/api-access"},{"title":"Manage env zero with the Terraform provider","sidebarTitle":"Terraform provider","href":"/guides/community-and-resources/support-and-help/terraform-provider"},{"title":"env zero MCP server","sidebarTitle":"MCP server","href":"/guides/community-and-resources/support-and-help/mcp-server"}]}]},{"group":"BILLING \u0026 SUPPORT","pages":[{"title":"Purchase options","href":"/guides/billing/purchase-options"},{"title":"Subscription tiers","href":"/guides/billing/subscription-tiers"},{"title":"Managing your subscription","href":"/guides/billing/managing-your-subscription"},{"title":"Support","href":"/guides/community-and-resources/support-and-help/support"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/users/list-users-vcs-id-mappings"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelogs"}]},{"tab":"Terraform Provider","icon":"external-link","href":"https://registry.terraform.io/providers/env0/env0/latest"},{"tab":"Status Page","icon":"external-link","href":"https://status.env0.com"},{"tab":"Schedule a Demo","icon":"external-link","href":"https://www.envzero.com/demo-request"},{"tab":"Start Free","icon":"external-link","href":"https://app.env0.com/"}]},"basePath":"","title":"Drift Actions - env zero docs","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}