Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.
The env zero CLI is a single binary for managing your environments and deployments from the terminal or CI. It reads environments, deployments, plans, projects, and templates, and acts on them: create, deploy, destroy, archive, and approve, cancel, or abort a deployment. Output is JSON on stdout, errors go to stderr, and exit codes are stable, so it fits cleanly into scripts.
The old CLI, the Node package @env0/cli version 1.x, is deprecated. The current CLI is a single binary and is the recommended way to use env zero from the terminal. Pin @env0/cli@^1 to stay on the old one while you migrate.
Prerequisites
An env zero account with appropriate permissions
A cloud credential assigned to the project you deploy into, so deployments can authenticate to your cloud provider
Step 1: Install
brew install env0/tap/env0
npm install -g @env0/cli@2
Homebrew covers macOS and Linux. The npm package installs the same binary, where version 2 is the current CLI. Binaries are also on the latest release. Verify with env0 version.
Step 2: Sign in
On your own machine, sign in through the browser:
env0 login
This confirms a short code, signs you in, and lets you pick a default organization and project. The session is stored in your OS keychain when available, so later commands need no flags. Use --no-browser to print the URL instead, and env0 status or env0 logout to check or clear the session.
From CI
Browser login needs a terminal, so automation uses an API key instead (any env zero key works). Create one under Organization Settings → API Keys, or from a signed-in CLI:
--role is required. Use env0 personal-api-key create --name <name> --yes instead for a key that carries your own permissions. See API keys for which to choose.Set the returned apiKeyId and apiKeySecret as environment variables:
Copy the API key secret when you create it. It is not shown again.
You can also pass --api-key-id and --api-key-secret on a single command.
Step 3: Deploy
environment create provisions a new environment and starts its first deployment. environment deploy runs a new deployment on one that already exists. Add --wait to either to block until it finishes and take the exit code from its result:
To create from a git repository instead, use --repository with --type (for example terraform) and --organization. While a deploy waits, step logs (git clone, then plan and apply for Terraform or OpenTofu) stream to stderr. Add --ttl 2h to create to have env zero destroy the environment after two hours.Actions take an environment id, not a name. Resolve a name to an id with:
When an environment requires approval, its deployment pauses. Find the deployment id (the deploy output carries it at .data.id, or list the latest one):
Set the gate per run with --requires-approval on environment deploy or destroy, and stop a running deployment with env0 deployment abort <deployment-id>.
Step 5: Inspect, destroy, and archive
Read commands print JSON for jq. Use -o compact for one line or -o table for a readable view:
env0 environment list --project <project-id>env0 context <environment-id>env0 deployment logs <deployment-id>
env0 context returns an environment’s state, recent deployments, and a drift or failure summary in one call, so it is a fast way to see why something failed. Every command and flag is listed in the command reference.Destroy an environment when you no longer need it. This deletes real infrastructure, so it requires confirmation:
env0 environment destroy <environment-id> --yes
Archiving is the other way to clear an environment. It tells env zero to stop tracking the environment without running a deployment, so its cloud resources are left alone:
env0 environment archive <environment-id>
Use it when you want to keep the infrastructure, and when Destroy is not available because the environment has never deployed. See mark an environment as inactive for what changes. To bring an archived environment back, redeploy it with env0 environment deploy <environment-id>.Projects archive the same way, with one difference: archiving a project cannot be undone.
env0 project archive <project-id>
Use the CLI with AI agents
The CLI is built for agents and scripts, not only people: JSON on stdout, errors on stderr, stable exit codes, and env0 context for one-request diagnosis. In an agent or CI context, authenticate with the ENV0_API_KEY_ID and ENV0_API_KEY_SECRET environment variables rather than browser login.
Install the skill
env0 skill install writes a usage guide into your coding agent’s config, so it knows the commands, flags, and output without you explaining them:
env0 skill install
It installs for Claude Code by default. Use --agent cursor, --agent codex, or --agent copilot for others, --global to install for your user account instead of the project, or --path for a specific file. env0 skill show prints the guide and env0 skill uninstall removes it. The same guide ships as an asset on every release, so you can download it without the CLI from the latest release.
Migration from v1
The old CLI was the Node package @env0/cli version 1.x. The current CLI covers the same actions and adds a full read and diagnosis surface, but it is not a drop-in replacement: it targets environments by id, renames two environment variables, and prints JSON by default instead of streaming logs. Pin the old one while you migrate:
npm install -g @env0/cli@^1
Install and authentication
v1
Current CLI
npm install -g @env0/cli
brew install env0/tap/env0 or npm install -g @env0/cli@2
env0 configure
env0 login, then env0 project use <project-id>
ENV0_API_KEY
ENV0_API_KEY_ID
ENV0_API_SECRET
ENV0_API_KEY_SECRET
ENV0_ORGANIZATION_ID, ENV0_PROJECT_ID, and ENV0_API_URL are unchanged. ENV0_ENVIRONMENT_NAME and ENV0_BLUEPRINT_ID are no longer read.
Legacy flags map across, though some now belong to a specific command:
environment deploy: -v to --var, -q to --secret, -u to --tf-var, -r to --revision, -t to a repeatable --target, -a to --requires-approval
environment destroy: -a to --requires-approval, -z to --skip-state-refresh, plus --checkout-updated-code
environment create: -w to --workspace-name (set once at creation, cannot change later), plus the same variable, --revision, and --requires-approval flags as deploy
The old CLI acted by name and blocked while streaming logs to stdout. The current CLI acts by id and returns the started deployment right away. Add --wait to block and stream logs to stderr, or run env0 deployment logs <id> --follow to stream them to stdout.
{"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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"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/community-and-resources/support-and-help/env-zero-cli","slug":"/guides/community-and-resources/support-and-help/env-zero-cli","pageMetadata":{"title":"env zero CLI Tool","sidebarTitle":"CLI","description":"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.","keywords":["CLI","command line","terminal","env zero CLI","deploy","environment management","automation","migration","AI agents","skill","archive"],"href":"/guides/community-and-resources/support-and-help/env-zero-cli"},"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: \"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\"\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,CodeGroup,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The env zero CLI is a single binary for managing your environments and deployments from the terminal or CI. It reads environments, deployments, plans, projects, and templates, and acts on them: create, deploy, destroy, archive, and approve, cancel, or abort a deployment. Output is JSON on stdout, errors go to stderr, and exit codes are stable, so it fits cleanly into scripts.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The old CLI, the Node package `,_jsx(_components.code,{children:`@env0/cli`}),` version 1.x, is deprecated. The current CLI is a single binary and is the recommended way to use env zero from the terminal. Pin `,_jsx(_components.code,{children:`@env0/cli@^1`}),` to stay on the old one while you `,_jsx(_components.a,{href:`#migration-from-v1`,children:`migrate`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`An env zero account with appropriate permissions`}),`\n`,_jsx(_components.li,{children:`A cloud credential assigned to the project you deploy into, so deployments can authenticate to your cloud provider`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-install`,children:`Step 1: Install`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Homebrew`,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`brew`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` env0/tap/env0`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`npm`,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -g`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @env0/cli@2`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[`Homebrew covers macOS and Linux. The npm package installs the same binary, where version 2 is the current CLI. Binaries are also on the `,_jsx(_components.a,{href:`https://github.com/env0/homebrew-tap/releases/latest`,children:`latest release`}),`. Verify with `,_jsx(_components.code,{children:`env0 version`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-sign-in`,children:`Step 2: Sign in`}),`\n`,_jsx(_components.p,{children:`On your own machine, sign in through the browser:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This confirms a short code, signs you in, and lets you pick a default organization and project. The session is stored in your OS keychain when available, so later commands need no flags. Use `,_jsx(_components.code,{children:`--no-browser`}),` to print the URL instead, and `,_jsx(_components.code,{children:`env0 status`}),` or `,_jsx(_components.code,{children:`env0 logout`}),` to check or clear the session.`]}),`\n`,_jsx(Heading,{level:`3`,id:`from-ci`,children:`From CI`}),`\n`,_jsxs(_components.p,{children:[`Browser login needs a terminal, so automation uses an API key instead (any env zero key works). Create one under `,_jsx(_components.strong,{children:`Organization Settings → API Keys`}),`, or from a signed-in CLI:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` api-key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ci-runner`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --role`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` User`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project-role`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`=Deployer`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --yes`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` compact`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--role`}),` is required. Use `,_jsx(_components.code,{children:`env0 personal-api-key create --name \u003cname> --yes`}),` instead for a key that carries your own permissions. See `,_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/env-zero-cli/command-reference#api-keys`,children:`API keys`}),` for which to choose.`]}),`\n`,_jsxs(_components.p,{children:[`Set the returned `,_jsx(_components.code,{children:`apiKeyId`}),` and `,_jsx(_components.code,{children:`apiKeySecret`}),` as environment variables:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ENV0_API_KEY_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`api-key-id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ENV0_API_KEY_SECRET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`api-key-secret`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Copy the API key secret when you create it. It is not shown again.`})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can also pass `,_jsx(_components.code,{children:`--api-key-id`}),` and `,_jsx(_components.code,{children:`--api-key-secret`}),` on a single command.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-deploy`,children:`Step 3: Deploy`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`environment create`}),` provisions a new environment and starts its first deployment. `,_jsx(_components.code,{children:`environment deploy`}),` runs a new deployment on one that already exists. Add `,_jsx(_components.code,{children:`--wait`}),` to either to block until it finishes and take the exit code from its result:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-environment`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --template`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`template-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`environment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --wait`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`To create from a git repository instead, use `,_jsx(_components.code,{children:`--repository`}),` with `,_jsx(_components.code,{children:`--type`}),` (for example `,_jsx(_components.code,{children:`terraform`}),`) and `,_jsx(_components.code,{children:`--organization`}),`. While a deploy waits, step logs (git clone, then plan and apply for Terraform or OpenTofu) stream to stderr. Add `,_jsx(_components.code,{children:`--ttl 2h`}),` to `,_jsx(_components.code,{children:`create`}),` to have env zero destroy the environment after two hours.`]}),`\n`,_jsx(_components.p,{children:`Actions take an environment id, not a name. Resolve a name to an id with:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` my-environment`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` compact`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -r`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.data[0].id'`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-approvals`,children:`Step 4: Approvals`}),`\n`,_jsxs(_components.p,{children:[`When an environment requires approval, its deployment pauses. Find the deployment id (the `,_jsx(_components.code,{children:`deploy`}),` output carries it at `,_jsx(_components.code,{children:`.data.id`}),`, or list the latest one):`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deployment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --environment`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`environment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --limit`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` compact`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -r`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '.data[0].id'`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Then act on it:`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`approve`,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deployment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` approve`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`deployment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cancel`,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deployment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cancel`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`deployment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[`Set the gate per run with `,_jsx(_components.code,{children:`--requires-approval`}),` on `,_jsx(_components.code,{children:`environment deploy`}),` or `,_jsx(_components.code,{children:`destroy`}),`, and stop a running deployment with `,_jsx(_components.code,{children:`env0 deployment abort \u003cdeployment-id>`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-5-inspect-destroy-and-archive`,children:`Step 5: Inspect, destroy, and archive`}),`\n`,_jsxs(_components.p,{children:[`Read commands print JSON for `,_jsx(_components.code,{children:`jq`}),`. Use `,_jsx(_components.code,{children:`-o compact`}),` for one line or `,_jsx(_components.code,{children:`-o table`}),` for a readable view:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --project`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` context`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`environment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deployment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logs`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`deployment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`env0 context`}),` returns an environment’s state, recent deployments, and a drift or failure summary in one call, so it is a fast way to see why something failed. Every command and flag is listed in the `,_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/env-zero-cli/command-reference`,children:`command reference`}),`.`]}),`\n`,_jsx(_components.p,{children:`Destroy an environment when you no longer need it. This deletes real infrastructure, so it requires confirmation:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` destroy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`environment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --yes`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Archiving is the other way to clear an environment. It tells env zero to stop tracking the environment without running a deployment, so its cloud resources are left alone:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` environment`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` archive`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`environment-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use it when you want to keep the infrastructure, and when Destroy is not available because the environment has never deployed. See `,_jsx(_components.a,{href:`/guides/admin-guide/environments#mark-an-environment-as-inactive`,children:`mark an environment as inactive`}),` for what changes. To bring an archived environment back, redeploy it with `,_jsx(_components.code,{children:`env0 environment deploy \u003cenvironment-id>`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Projects archive the same way, with one difference: `,_jsx(_components.a,{href:`/guides/admin-guide/projects#archive-a-project`,children:`archiving a project cannot be undone`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` archive`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`project-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`use-the-cli-with-ai-agents`,children:`Use the CLI with AI agents`}),`\n`,_jsxs(_components.p,{children:[`The CLI is built for agents and scripts, not only people: JSON on stdout, errors on stderr, `,_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/env-zero-cli/command-reference#exit-codes`,children:`stable exit codes`}),`, and `,_jsx(_components.code,{children:`env0 context`}),` for one-request diagnosis. In an agent or CI context, authenticate with the `,_jsx(_components.code,{children:`ENV0_API_KEY_ID`}),` and `,_jsx(_components.code,{children:`ENV0_API_KEY_SECRET`}),` environment variables rather than browser login.`]}),`\n`,_jsx(Heading,{level:`3`,id:`install-the-skill`,children:`Install the skill`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`env0 skill install`}),` writes a usage guide into your coding agent’s config, so it knows the commands, flags, and output without you explaining them:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`env0`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`It installs for Claude Code by default. Use `,_jsx(_components.code,{children:`--agent cursor`}),`, `,_jsx(_components.code,{children:`--agent codex`}),`, or `,_jsx(_components.code,{children:`--agent copilot`}),` for others, `,_jsx(_components.code,{children:`--global`}),` to install for your user account instead of the project, or `,_jsx(_components.code,{children:`--path`}),` for a specific file. `,_jsx(_components.code,{children:`env0 skill show`}),` prints the guide and `,_jsx(_components.code,{children:`env0 skill uninstall`}),` removes it. The same guide ships as an asset on every release, so you can download it without the CLI from the `,_jsx(_components.a,{href:`https://github.com/env0/homebrew-tap/releases/latest`,children:`latest release`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`migration-from-v1`,children:`Migration from v1`}),`\n`,_jsxs(_components.p,{children:[`The old CLI was the Node package `,_jsx(_components.code,{children:`@env0/cli`}),` version 1.x. The current CLI covers the same actions and adds a full read and diagnosis surface, but it is not a drop-in replacement: it targets environments by id, renames two environment variables, and prints JSON by default instead of streaming logs. Pin the old one while you migrate:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -g`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @env0/cli@^1`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`install-and-authentication`,children:`Install and authentication`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`v1`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Current CLI`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`npm install -g @env0/cli`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`brew install env0/tap/env0`}),` or `,_jsx(_components.code,{children:`npm install -g @env0/cli@2`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 configure`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`env0 login`}),`, then `,_jsx(_components.code,{children:`env0 project use \u003cproject-id>`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`ENV0_API_KEY`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`ENV0_API_KEY_ID`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`ENV0_API_SECRET`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`ENV0_API_KEY_SECRET`})})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`ENV0_ORGANIZATION_ID`}),`, `,_jsx(_components.code,{children:`ENV0_PROJECT_ID`}),`, and `,_jsx(_components.code,{children:`ENV0_API_URL`}),` are unchanged. `,_jsx(_components.code,{children:`ENV0_ENVIRONMENT_NAME`}),` and `,_jsx(_components.code,{children:`ENV0_BLUEPRINT_ID`}),` are no longer read.`]}),`\n`,_jsx(Heading,{level:`3`,id:`commands`,children:`Commands`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`v1`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Current CLI`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`env0 deploy`}),` (existing environment)`]}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 environment deploy \u003cid>`})})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`env0 deploy`}),` (first run, creates it)`]}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`env0 environment create --template \u003cid>`}),` (or `,_jsx(_components.code,{children:`--repository`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 destroy`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 environment destroy \u003cid> --yes`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 approve`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 deployment approve \u003cid>`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 cancel`})}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`env0 deployment cancel \u003cid>`})})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`flags`,children:`Flags`}),`\n`,_jsx(_components.p,{children:`Legacy flags map across, though some now belong to a specific command:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`environment deploy`}),`: `,_jsx(_components.code,{children:`-v`}),` to `,_jsx(_components.code,{children:`--var`}),`, `,_jsx(_components.code,{children:`-q`}),` to `,_jsx(_components.code,{children:`--secret`}),`, `,_jsx(_components.code,{children:`-u`}),` to `,_jsx(_components.code,{children:`--tf-var`}),`, `,_jsx(_components.code,{children:`-r`}),` to `,_jsx(_components.code,{children:`--revision`}),`, `,_jsx(_components.code,{children:`-t`}),` to a repeatable `,_jsx(_components.code,{children:`--target`}),`, `,_jsx(_components.code,{children:`-a`}),` to `,_jsx(_components.code,{children:`--requires-approval`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`environment destroy`}),`: `,_jsx(_components.code,{children:`-a`}),` to `,_jsx(_components.code,{children:`--requires-approval`}),`, `,_jsx(_components.code,{children:`-z`}),` to `,_jsx(_components.code,{children:`--skip-state-refresh`}),`, plus `,_jsx(_components.code,{children:`--checkout-updated-code`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`environment create`}),`: `,_jsx(_components.code,{children:`-w`}),` to `,_jsx(_components.code,{children:`--workspace-name`}),` (set once at creation, cannot change later), plus the same variable, `,_jsx(_components.code,{children:`--revision`}),`, and `,_jsx(_components.code,{children:`--requires-approval`}),` flags as deploy`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The old CLI acted by name and blocked while streaming logs to stdout. The current CLI acts by id and returns the started deployment right away. Add `,_jsx(_components.code,{children:`--wait`}),` to block and stream logs to stderr, or run `,_jsx(_components.code,{children:`env0 deployment logs \u003cid> --follow`}),` to stream them to stdout.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/env-zero-cli/workflows`,children:`Deploy a workflow from the CLI`}),`, with a different branch and variables per sub-environment`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/admin-guide/user-role-and-team-management/api-keys`,children:`Manage API keys`}),` for CI and other automation`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/community-and-resources/support-and-help/env-zero-cli/troubleshooting`,children:`Troubleshoot CLI errors`}),` when a command fails or returns unexpected results`]}),`\n`]})]})}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":"env zero CLI Tool","sidebarTitle":"CLI","description":"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.","keywords":["CLI","command line","terminal","env zero CLI","deploy","environment management","automation","migration","AI agents","skill","archive"],"href":"/guides/community-and-resources/support-and-help/env-zero-cli"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Step 1: Install","slug":"step-1-install","depth":2,"children":[]},{"title":"Step 2: Sign in","slug":"step-2-sign-in","depth":2,"children":[{"title":"From CI","slug":"from-ci","depth":3,"children":[]}]},{"title":"Step 3: Deploy","slug":"step-3-deploy","depth":2,"children":[]},{"title":"Step 4: Approvals","slug":"step-4-approvals","depth":2,"children":[]},{"title":"Step 5: Inspect, destroy, and archive","slug":"step-5-inspect-destroy-and-archive","depth":2,"children":[]},{"title":"Use the CLI with AI agents","slug":"use-the-cli-with-ai-agents","depth":2,"children":[{"title":"Install the skill","slug":"install-the-skill","depth":3,"children":[]}]},{"title":"Migration from v1","slug":"migration-from-v1","depth":2,"children":[{"title":"Install and authentication","slug":"install-and-authentication","depth":3,"children":[]},{"title":"Commands","slug":"commands","depth":3,"children":[]},{"title":"Flags","slug":"flags","depth":3,"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":"env zero CLI Tool - env zero docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T13:09:55.739Z","originalFileLocation":"guides/community-and-resources/support-and-help/env-zero-cli.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=\"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\">\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=\"env zero CLI Tool - env zero docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\">\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/community-and-resources/support-and-help/env-zero-cli\">\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=CLI+%26+API+access\u0026amp;title=env+zero+CLI+Tool\u0026amp;description=Install+the+env+zero+CLI+to+deploy%2C+inspect%2C+and+manage+environments+from+your+terminal+or+CI%2C+with+JSON+output+and+stable+exit+codes+for+scripts.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=67786dced8b52d87f21cad15abe48e6060ca82b0b09381c42fb87ebcb0c2251d\">\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=\"env zero CLI Tool - env zero docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://envzero-b61043c8.mintlify.site/_mintlify/api/og/v2?division=CLI+%26+API+access\u0026amp;title=env+zero+CLI+Tool\u0026amp;description=Install+the+env+zero+CLI+to+deploy%2C+inspect%2C+and+manage+environments+from+your+terminal+or+CI%2C+with+JSON+output+and+stable+exit+codes+for+scripts.\u0026amp;theme=b92d60cc1454bb7630490ffe\u0026amp;signature=67786dced8b52d87f21cad15abe48e6060ca82b0b09381c42fb87ebcb0c2251d\">\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/community-and-resources/support-and-help/env-zero-cli\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/community-and-resources/support-and-help/env-zero-cli.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/community-and-resources/support-and-help/env-zero-cli#webpage\",\"url\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli\",\"name\":\"env zero CLI Tool\",\"description\":\"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\",\"dateModified\":\"2026-11-04T13:09:55.739Z\",\"isPartOf\":{\"@id\":\"https://docs.envzero.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"INTEGRATIONS \u0026 DEVELOPER TOOLS\",\"item\":\"https://docs.envzero.com/guides/integrations/notifications\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"env zero CLI Tool\",\"item\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli#article\",\"headline\":\"env zero CLI Tool\",\"name\":\"env zero CLI Tool\",\"description\":\"Install the env zero CLI to deploy, inspect, and manage environments from your terminal or CI, with JSON output and stable exit codes for scripts.\",\"url\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli\",\"mainEntityOfPage\":{\"@id\":\"https://docs.envzero.com/guides/community-and-resources/support-and-help/env-zero-cli#webpage\"},\"dateModified\":\"2026-11-04T13:09:55.739Z\",\"keywords\":\"CLI, command line, terminal, env zero CLI, deploy, environment management, automation, migration, AI agents, skill, archive\",\"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/community-and-resources/support-and-help/env-zero-cli.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","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","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","description":"Set up the env zero Backstage plugin to give developers self-service IaC environment creation and management from within the Backstage catalog.","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","description":"Every env zero CLI command and flag, with authentication and stored context, the JSON output envelope, pagination, exit codes, and telemetry.","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":"env zero CLI Tool - env zero docs","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}