Configuring Providers: Claude, Codex, OpenCode, and More
Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.
Liza integrates with coding agent providers by wrapping their own CLIs directly. You authenticate with each provider CLI separately using that provider’s own mechanism — Liza does not store or manage API keys. When you run a Liza agent, Liza invokes the underlying CLI with the correct arguments, contract files, and workspace permissions it needs to operate autonomously.
Each provider CLI handles authentication, model selection, and execution independently. Liza’s role is to:
Install behavioral contracts and skills that the CLI reads at session start (liza setup)
Configure project-level permissions, hooks, and settings so agents can operate headlessly (liza init)
Invoke the CLI with the right arguments for pairing or multi-agent mode (liza agent)
This architecture means you can switch providers per-task or per-role without changing your workflow. Reviewers can use a different provider than coders, enabling adversarial diversity in your pipeline.
Responsive to tooling feedback; verify before unattended use
Mistral Devstral-2
Partial
Requires explicit activation and supervision; not recommended as primary
Gemini 2.5 Flash
Incompatible
Architectural limitation — cannot be fixed at the prompt level
Running Claude and Codex as adversarial pairs — Claude as coder and Codex as reviewer, or vice versa — increases review diversity and catches a wider class of errors than same-provider pairing. This is especially useful for high-stakes pipelines.
Claude Code is the reference provider and the default when no config.default_cli is set.Setup:
liza setup --claude # installs skill symlinks to ~/.claude/skills/liza init --claude # writes .claude/settings.json and .claude/hooks/
What liza init --claude manages:
.claude/settings.json — written from Liza’s embedded template; includes defaultMode: acceptEdits (required for headless operation), enableAllProjectMcpServers, all Bash(liza:*) permissions, skill references, and permissions.additionalDirectories granting access to ~/.liza and /tmp
Two-layer permission model:Claude Code unions permissions from two files:
Layer
File
Managed by
Contains
Project
<project>/.claude/settings.json
liza init (automatic)
Liza CLI permissions, skills, Git/build commands
Global
~/.claude/settings.json
Manual (one-time)
Personal MCP tools, machine-specific permissions
The project layer is portable and team-shareable. The global layer is machine-specific. Both layers are required — neither alone is sufficient.
Do not hand-craft a subset of .claude/settings.json. Liza’s embedded template includes the complete set of permissions agents need. A missing permission will silently block an agent mid-task.
Codex is fully supported and equally capable to Claude for all agent roles.Setup:
liza setup --codex # installs skill symlinks to ~/.codex/skills/liza init --codex # configures ~/.codex/config.toml and project hooks
What liza init --codex manages:
~/.codex/config.toml — adds the project root and project .git directory to sandbox_workspace_write.writable_roots, sets model, approval policy, sandbox mode, reasoning effort, and network access
.codex/config.toml and .codex/hooks.json — project-local hook activation
Global fallback ~/.codex/AGENTS.md symlink for brownfield projects
Pinning the Codex version for headless agents:Add codex_package_version to .liza/state.yaml for a durable pin:
config: codex_package_version: "0.125.0"
Or use the environment variable as a temporary fallback:
export LIZA_CODEX_VERSION=0.125.0
The state config value takes precedence over the environment variable. The version pin makes Liza launch headless agents through npm exec --yes --package @openai/codex@<version> -- codex. Interactive liza agent -i always uses the installed binary regardless of the pin.
Git worktrees write their task index under the main repo’s .git/worktrees/<task>/index.lock path, not under the worktree directory itself. This is why the project .git directory must appear in writable_roots — without it, Codex cannot write Git metadata in worktrees.
OpenCode requires explicit flags at both setup and init time.Setup:
liza setup --opencode # installs skill symlinks to ~/.config/opencode/skills/liza init --opencode # activates contract and installs exec.ts compatibility tool
What liza init --opencode manages:
AGENTS.md symlink → ~/.liza/CORE.md (or ~/.config/opencode/AGENTS.md fallback for brownfield)
.opencode/tools/exec.ts — Liza’s managed compatibility tool that exposes a simple exec schema with required cmd and nullable optional workdir and timeout_ms fields; agents prefer this for shell and file operations
Headless MAS execution:Liza runs headless OpenCode agents with:
opencode run "<prompt>" --dangerously-skip-permissions
Use --cli opencode-acp if another ACP-capable tool needs OpenCode as an agent server. This selects the ACPX-backed runtime; it is not an OpenCode command name. To configure OpenCode as an ACP server for external tools:
For Groq-backed OpenCode runs, prefer Llama 3.3 70B over GPT-OSS 120B until tool-call reliability is validated against a real Liza task. Always test the selected model before relying on it for unattended work.
Gemini has weaker instruction-following than Claude and Codex and is not recommended as a primary provider. If you use it, perform the required manual setup step after running liza setup --gemini.Setup:
liza setup --gemini # installs skill symlinks to ~/.gemini/skills/
Required manual step — add ~/.liza to ~/.gemini/settings.json:
Without this entry, Gemini cannot read the behavioral contracts and will not follow the Liza protocol. Verify activation by starting Gemini in the initialized project and confirming it acknowledges the contract.Gemini 2.5 Flash is architecturally incompatible with Liza and cannot be fixed at the prompt level. Use other Gemini model variants if you must use Gemini.
Kimi runs through the Claude CLI by pointing it at Kimi’s API endpoint. No separate Liza setup flag is required beyond --claude.Setup:
liza setup --claude # Kimi reuses Claude's global setupliza init --claude # Kimi reuses Claude's project setup
Then run kimi as you would run claude. It inherits Claude’s config automatically. To use Kimi as a Liza agent:
liza agent coder --cli kimi
Kimi 2.5 is compatible but performs poorly on complex real-world tasks. Verify its behavior against a representative task before using it for unattended multi-agent runs.
Mistral through the Vibe CLI is partial support only. Explicit activation and supervision are required.Setup:
liza setup --mistral # installs prompt link under ~/.vibe/prompts/
Filesystem MCP server — Mistral may need this in ~/.vibe/config.toml to read ~/.liza and your workspace:
Mistral is not recommended as a primary Liza provider. Use it only when Claude and Codex are unavailable, and verify contract activation before running any autonomous tasks.
Set default CLIs at init time rather than passing --cli on every liza agent call:
liza init "Goal" \ --default-doer-cli codex \ --default-reviewer-cli claude
Or add them to .liza/state.yaml directly:
config: default_doer_cli: codex default_reviewer_cli: claude
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Liza","colors":{"primary":"#ef7025","light":"#eec9bc","dark":"#4fa1ab"},"favicon":"https://media.brand.dev/8792cd8a-f0f9-4033-8d76-0b2ba3c65902.png","navbar":{"primary":{"type":"github","href":"https://github.com/liza-mas/liza"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lizamas","hasAudioNarration":false,"actualSubdomain":"lizamas","customDomains":[],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-lizamas-075c12df","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae9599aae8d0278471c4e37:success","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Documentation","count":21},{"language":"default","tag":"Core Concepts","count":4},{"language":"default","tag":"Configuration","count":4},{"language":"default","tag":"Guides","count":4},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Modes","count":3},{"language":"default","tag":"Reference","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"llms-txt-v2","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"configuration/providers","slug":"/configuration/providers","pageMetadata":{"title":"Configuring Providers: Claude, Codex, OpenCode, and More","sidebarTitle":"Providers","description":"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.","href":"/configuration/providers"},"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: \"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\"\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={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Tab,Table,Tabs,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Liza integrates with coding agent providers by wrapping their own CLIs directly. You authenticate with each provider CLI separately using that provider’s own mechanism — Liza does not store or manage API keys. When you run a Liza agent, Liza invokes the underlying CLI with the correct arguments, contract files, and workspace permissions it needs to operate autonomously.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-provider-integration-works`,children:`How Provider Integration Works`}),`\n`,_jsx(_components.p,{children:`Each provider CLI handles authentication, model selection, and execution independently. Liza’s role is to:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Install behavioral contracts and skills that the CLI reads at session start (`,_jsx(_components.code,{children:`liza setup`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Configure project-level permissions, hooks, and settings so agents can operate headlessly (`,_jsx(_components.code,{children:`liza init`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Invoke the CLI with the right arguments for pairing or multi-agent mode (`,_jsx(_components.code,{children:`liza agent`}),`)`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This architecture means you can switch providers per-task or per-role without changing your workflow. Reviewers can use a different provider than coders, enabling adversarial diversity in your pipeline.`}),`\n`,_jsx(Heading,{level:`2`,id:`supported-provider-clis`,children:`Supported Provider CLIs`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`--cli`}),` flag on `,_jsx(_components.code,{children:`liza agent`}),` accepts any of these values:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`CLI name`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`claude`})}),_jsx(_components.td,{children:`Claude Code CLI (default when no config is set)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`codex`})}),_jsx(_components.td,{children:`OpenAI Codex CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`codex-acp`})}),_jsxs(_components.td,{children:[`Codex through ACPX; requires `,_jsx(_components.code,{children:`acpx`}),` on PATH`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`opencode`})}),_jsxs(_components.td,{children:[`OpenCode CLI via `,_jsx(_components.code,{children:`opencode run`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`opencode-acp`})}),_jsxs(_components.td,{children:[`OpenCode through ACPX; requires `,_jsx(_components.code,{children:`acpx`}),` on PATH`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`gemini`})}),_jsx(_components.td,{children:`Google Gemini CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`mistral`})}),_jsx(_components.td,{children:`Mistral Le Chat CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`kimi`})}),_jsx(_components.td,{children:`Kimi (alias to Claude with Kimi-specific env vars)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`provider-compatibility-matrix`,children:`Provider Compatibility Matrix`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Provider`}),_jsx(_components.th,{children:`Classification`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Claude Opus 4.x`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Fully compatible`})}),_jsx(_components.td,{children:`Reference provider; recommended for all roles`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GPT-5.x / Codex`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Fully compatible`})}),_jsx(_components.td,{children:`Equally capable; recommended alongside Claude`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Kimi 2.5`}),_jsx(_components.td,{children:`Compatible — limited real-world performance`}),_jsx(_components.td,{children:`Responsive to tooling feedback; verify before unattended use`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Mistral Devstral-2`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Partial`})}),_jsx(_components.td,{children:`Requires explicit activation and supervision; not recommended as primary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Gemini 2.5 Flash`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Incompatible`})}),_jsx(_components.td,{children:`Architectural limitation — cannot be fixed at the prompt level`})]})]})]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Running Claude and Codex as adversarial pairs — Claude as coder and Codex as reviewer, or vice versa — increases review diversity and catches a wider class of errors than same-provider pairing. This is especially useful for high-stakes pipelines.`})}),`\n`,_jsx(Heading,{level:`2`,id:`per-provider-setup`,children:`Per-Provider Setup`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Claude`,id:`claude`,children:[_jsxs(_components.p,{children:[`Claude Code is the reference provider and the default when no `,_jsx(_components.code,{children:`config.default_cli`}),` is set.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --claude `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# installs skill symlinks to ~/.claude/skills/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza init --claude `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# writes .claude/settings.json and .claude/hooks/`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`What `,_jsx(_components.code,{children:`liza init --claude`}),` manages:`]})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`.claude/settings.json`}),` — written from Liza’s embedded template; includes `,_jsx(_components.code,{children:`defaultMode: acceptEdits`}),` (required for headless operation), `,_jsx(_components.code,{children:`enableAllProjectMcpServers`}),`, all `,_jsx(_components.code,{children:`Bash(liza:*)`}),` permissions, skill references, and `,_jsx(_components.code,{children:`permissions.additionalDirectories`}),` granting access to `,_jsx(_components.code,{children:`~/.liza`}),` and `,_jsx(_components.code,{children:`/tmp`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`.claude/hooks/`}),` — session initialization, project context injection, Git usage guards, and wrong-worktree path detection`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`.claudeignore`}),` — created when absent`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Two-layer permission model:`})}),_jsx(_components.p,{children:`Claude Code unions permissions from two files:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Layer`}),_jsx(_components.th,{children:`File`}),_jsx(_components.th,{children:`Managed by`}),_jsx(_components.th,{children:`Contains`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Project`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\u003cproject>/.claude/settings.json`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`liza init`}),` (automatic)`]}),_jsx(_components.td,{children:`Liza CLI permissions, skills, Git/build commands`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Global`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.claude/settings.json`})}),_jsx(_components.td,{children:`Manual (one-time)`}),_jsx(_components.td,{children:`Personal MCP tools, machine-specific permissions`})]})]})]}),_jsx(_components.p,{children:`The project layer is portable and team-shareable. The global layer is machine-specific. Both layers are required — neither alone is sufficient.`}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not hand-craft a subset of `,_jsx(_components.code,{children:`.claude/settings.json`}),`. Liza’s embedded template includes the complete set of permissions agents need. A missing permission will silently block an agent mid-task.`]})})]}),_jsxs(Tab,{title:`Codex`,id:`codex`,children:[_jsx(_components.p,{children:`Codex is fully supported and equally capable to Claude for all agent roles.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --codex `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# installs skill symlinks to ~/.codex/skills/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza init --codex `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# configures ~/.codex/config.toml and project hooks`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`What `,_jsx(_components.code,{children:`liza init --codex`}),` manages:`]})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`~/.codex/config.toml`}),` — adds the project root and project `,_jsx(_components.code,{children:`.git`}),` directory to `,_jsx(_components.code,{children:`sandbox_workspace_write.writable_roots`}),`, sets model, approval policy, sandbox mode, reasoning effort, and network access`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`.codex/config.toml`}),` and `,_jsx(_components.code,{children:`.codex/hooks.json`}),` — project-local hook activation`]}),`\n`,_jsxs(_components.li,{children:[`Global fallback `,_jsx(_components.code,{children:`~/.codex/AGENTS.md`}),` symlink for brownfield projects`]}),`\n`]}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Recommended global `,_jsx(_components.code,{children:`~/.codex/config.toml`}),` shape:`]})}),_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`toml`,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:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`model`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"gpt-5.5\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`approval_policy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"never\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`sandbox_mode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"workspace-write\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`model_reasoning_effort`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"high\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`personality`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pragmatic\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`permissions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`workspace`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`sandbox_workspace_write`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`network_access`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`exclude_tmpdir_env_var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`exclude_slash_tmp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`writable_roots`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.codex\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.liza\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.npm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.pyenv/shims\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.cache\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/tmp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/path/to/project\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/path/to/project/.git\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Pinning the Codex version for headless agents:`})}),_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`codex_package_version`}),` to `,_jsx(_components.code,{children:`.liza/state.yaml`}),` for a durable pin:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,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:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` codex_package_version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0.125.0\"`})]}),`\n`]})})}),_jsx(_components.p,{children:`Or use the environment variable as a temporary fallback:`}),_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:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` LIZA_CODEX_VERSION=0.125.0`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The state config value takes precedence over the environment variable. The version pin makes Liza launch headless agents through `,_jsx(_components.code,{children:`npm exec --yes --package @openai/codex@\u003cversion> -- codex`}),`. Interactive `,_jsx(_components.code,{children:`liza agent -i`}),` always uses the installed binary regardless of the pin.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Git worktrees write their task index under the main repo’s `,_jsx(_components.code,{children:`.git/worktrees/\u003ctask>/index.lock`}),` path, not under the worktree directory itself. This is why the project `,_jsx(_components.code,{children:`.git`}),` directory must appear in `,_jsx(_components.code,{children:`writable_roots`}),` — without it, Codex cannot write Git metadata in worktrees.`]})})]}),_jsxs(Tab,{title:`OpenCode`,id:`opencode`,children:[_jsx(_components.p,{children:`OpenCode requires explicit flags at both setup and init time.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --opencode `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# installs skill symlinks to ~/.config/opencode/skills/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza init --opencode `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# activates contract and installs exec.ts compatibility tool`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`What `,_jsx(_components.code,{children:`liza init --opencode`}),` manages:`]})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`AGENTS.md`}),` symlink → `,_jsx(_components.code,{children:`~/.liza/CORE.md`}),` (or `,_jsx(_components.code,{children:`~/.config/opencode/AGENTS.md`}),` fallback for brownfield)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`.opencode/tools/exec.ts`}),` — Liza’s managed compatibility tool that exposes a simple `,_jsx(_components.code,{children:`exec`}),` schema with required `,_jsx(_components.code,{children:`cmd`}),` and nullable optional `,_jsx(_components.code,{children:`workdir`}),` and `,_jsx(_components.code,{children:`timeout_ms`}),` fields; agents prefer this for shell and file operations`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Headless MAS execution:`})}),_jsx(_components.p,{children:`Liza runs headless OpenCode agents with:`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`opencode run `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cprompt>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` --dangerously-skip-permissions`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`--cli opencode-acp`}),` if another ACP-capable tool needs OpenCode as an agent server. This selects the ACPX-backed runtime; it is not an OpenCode command name. To configure OpenCode as an ACP server for external tools:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"agent_servers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"OpenCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"command\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"opencode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"args\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"acp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(Tip,{children:_jsx(_components.p,{children:`For Groq-backed OpenCode runs, prefer Llama 3.3 70B over GPT-OSS 120B until tool-call reliability is validated against a real Liza task. Always test the selected model before relying on it for unattended work.`})})]}),_jsxs(Tab,{title:`Gemini`,id:`gemini`,children:[_jsxs(_components.p,{children:[`Gemini has weaker instruction-following than Claude and Codex and is not recommended as a primary provider. If you use it, perform the required manual setup step after running `,_jsx(_components.code,{children:`liza setup --gemini`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --gemini `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# installs skill symlinks to ~/.gemini/skills/`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Required manual step`}),` — add `,_jsx(_components.code,{children:`~/.liza`}),` to `,_jsx(_components.code,{children:`~/.gemini/settings.json`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"context\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"includeDirectories\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"~/.liza\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Without this entry, Gemini cannot read the behavioral contracts and will not follow the Liza protocol. Verify activation by starting Gemini in the initialized project and confirming it acknowledges the contract.`}),_jsx(_components.p,{children:`Gemini 2.5 Flash is architecturally incompatible with Liza and cannot be fixed at the prompt level. Use other Gemini model variants if you must use Gemini.`})]}),_jsxs(Tab,{title:`Kimi`,id:`kimi`,children:[_jsxs(_components.p,{children:[`Kimi runs through the Claude CLI by pointing it at Kimi’s API endpoint. No separate Liza setup flag is required beyond `,_jsx(_components.code,{children:`--claude`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --claude `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Kimi reuses Claude's global setup`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza init --claude `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Kimi reuses Claude's project setup`})]}),`\n`]})})}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Create a local `,_jsx(_components.code,{children:`kimi`}),` wrapper:`]})}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,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:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`cat`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` > ~/.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/bin/kimi \u003c\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'EOF'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`#!/bin/bash`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`source ~/.llm-credentials`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ANTHROPIC_BASE_URL=https://api.kimi.com/coding/ \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ANTHROPIC_API_KEY=$KIMI_API_KEY \\\\`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ANTHROPIC_MODEL=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'kimi-k2.5'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`claude `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$@\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EOF`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`chmod +x ~/.`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/bin/kimi`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Then run `,_jsx(_components.code,{children:`kimi`}),` as you would run `,_jsx(_components.code,{children:`claude`}),`. It inherits Claude’s config automatically. To use Kimi as a Liza agent:`]}),_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:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza agent coder --cli kimi`})}),`\n`]})})}),_jsx(_components.p,{children:`Kimi 2.5 is compatible but performs poorly on complex real-world tasks. Verify its behavior against a representative task before using it for unattended multi-agent runs.`})]}),_jsxs(Tab,{title:`Mistral / Vibe`,id:`mistral-%2F-vibe`,children:[_jsx(_components.p,{children:`Mistral through the Vibe CLI is partial support only. Explicit activation and supervision are required.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Setup:`})}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza setup --mistral `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# installs prompt link under ~/.vibe/prompts/`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Filesystem MCP server`}),` — Mistral may need this in `,_jsx(_components.code,{children:`~/.vibe/config.toml`}),` to read `,_jsx(_components.code,{children:`~/.liza`}),` and your workspace:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`toml`,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:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`mcp_servers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"filesystem\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`transport`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"stdio\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`command`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"npx\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`args`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"-y\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@modelcontextprotocol/server-filesystem\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.vibe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/Workspace\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"/home/\u003cUSER>/.liza\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})}),`\n`]})})}),_jsx(_components.p,{children:`Mistral is not recommended as a primary Liza provider. Use it only when Claude and Codex are unavailable, and verify contract activation before running any autonomous tasks.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`environment-variables`,children:`Environment Variables`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LIZA_CODEX_VERSION`})}),_jsx(_components.td,{children:`unset`}),_jsxs(_components.td,{children:[`Process-local fallback for `,_jsx(_components.code,{children:`config.codex_package_version`}),` when launching headless Codex agents`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_BASE_URL`})}),_jsx(_components.td,{children:`(Claude default)`}),_jsx(_components.td,{children:`Override the Anthropic API base URL — used by the Kimi wrapper to point Claude CLI at Kimi’s endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_API_KEY`})}),_jsx(_components.td,{children:`(Claude default)`}),_jsx(_components.td,{children:`Override the API key — used by the Kimi wrapper`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LIZA_DEFAULT_CLI`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Fallback default CLI when no role-specific default is configured`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LIZA_DEFAULT_DOER_CLI`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Default CLI for coders and orchestrators`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LIZA_DEFAULT_REVIEWER_CLI`})}),_jsx(_components.td,{children:`unset`}),_jsx(_components.td,{children:`Default CLI for reviewers`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LIZA_DISABLE_CLAUDE_SUBAGENTS`})}),_jsx(_components.td,{children:`unset`}),_jsxs(_components.td,{children:[`Set to `,_jsx(_components.code,{children:`1`}),` to launch Claude Code with `,_jsx(_components.code,{children:`--disallowedTools Task`}),`, disabling subagent delegation`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`setting-provider-defaults`,children:`Setting Provider Defaults`}),`\n`,_jsxs(_components.p,{children:[`Set default CLIs at init time rather than passing `,_jsx(_components.code,{children:`--cli`}),` on every `,_jsx(_components.code,{children:`liza agent`}),` call:`]}),`\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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`liza init `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Goal\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` --default-doer-cli codex \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` --default-reviewer-cli claude`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Or add them to `,_jsx(_components.code,{children:`.liza/state.yaml`}),` directly:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`yaml`,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:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` default_doer_cli`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`codex`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` default_reviewer_cli`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`claude`})]}),`\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":"Configuring Providers: Claude, Codex, OpenCode, and More","sidebarTitle":"Providers","description":"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.","href":"/configuration/providers"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How Provider Integration Works","slug":"how-provider-integration-works","depth":2,"children":[]},{"title":"Supported Provider CLIs","slug":"supported-provider-clis","depth":2,"children":[]},{"title":"Provider Compatibility Matrix","slug":"provider-compatibility-matrix","depth":2,"children":[]},{"title":"Per-Provider Setup","slug":"per-provider-setup","depth":2,"children":[]},{"title":"Environment Variables","slug":"environment-variables","depth":2,"children":[]},{"title":"Setting Provider Defaults","slug":"setting-provider-defaults","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"lizamas","siteName":"Liza","title":"Configuring Providers: Claude, Codex, OpenCode, and More - Liza","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-11T00:12:49.953Z","originalFileLocation":"configuration/providers.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=\"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Liza\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://media.brand.dev/8792cd8a-f0f9-4033-8d76-0b2ba3c65902.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://media.brand.dev/8792cd8a-f0f9-4033-8d76-0b2ba3c65902.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://media.brand.dev/8792cd8a-f0f9-4033-8d76-0b2ba3c65902.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://media.brand.dev/8792cd8a-f0f9-4033-8d76-0b2ba3c65902.png\">\u003cmeta data-mint-head property=\"og:title\" content=\"Configuring Providers: Claude, Codex, OpenCode, and More - Liza\">\u003cmeta data-mint-head property=\"og:description\" content=\"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Liza\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://lizamas.mintlify.app/configuration/providers\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lizamas.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Configuring+Providers%3A+Claude%2C+Codex%2C+OpenCode%2C+and+More\u0026amp;description=Liza+wraps+provider+CLIs+directly+%E2%80%94+no+API+keys+required.+Configure+Claude+Code%2C+Codex%2C+OpenCode%2C+Kimi%2C+Mistral%2C+or+Gemini+for+use+with+Liza.\u0026amp;theme=c2f844e4eb2bbb817b1fc1a7\u0026amp;signature=c7ca4dc8b04f281c7b93d67edeaefd77a4dd4f8fc3680ea08099fddb1068891e\">\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=\"Configuring Providers: Claude, Codex, OpenCode, and More - Liza\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lizamas.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Configuring+Providers%3A+Claude%2C+Codex%2C+OpenCode%2C+and+More\u0026amp;description=Liza+wraps+provider+CLIs+directly+%E2%80%94+no+API+keys+required.+Configure+Claude+Code%2C+Codex%2C+OpenCode%2C+Kimi%2C+Mistral%2C+or+Gemini+for+use+with+Liza.\u0026amp;theme=c2f844e4eb2bbb817b1fc1a7\u0026amp;signature=c7ca4dc8b04f281c7b93d67edeaefd77a4dd4f8fc3680ea08099fddb1068891e\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/lizamas/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Liza\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ef7025\">\u003clink data-mint-head rel=\"canonical\" href=\"https://lizamas.mintlify.app/configuration/providers\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/configuration/providers.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://lizamas.mintlify.app/#organization\",\"name\":\"Liza\",\"url\":\"https://lizamas.mintlify.app\"},{\"@type\":\"WebSite\",\"@id\":\"https://lizamas.mintlify.app#website\",\"name\":\"Liza\",\"url\":\"https://lizamas.mintlify.app\",\"publisher\":{\"@id\":\"https://lizamas.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://lizamas.mintlify.app/configuration/providers#webpage\",\"url\":\"https://lizamas.mintlify.app/configuration/providers\",\"name\":\"Configuring Providers: Claude, Codex, OpenCode, and More\",\"description\":\"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\",\"dateModified\":\"2026-06-11T00:12:49.953Z\",\"isPartOf\":{\"@id\":\"https://lizamas.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://lizamas.mintlify.app/configuration/providers#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://lizamas.mintlify.app/configuration/providers#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configuration\",\"item\":\"https://lizamas.mintlify.app/configuration/global-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuring Providers: Claude, Codex, OpenCode, and More\",\"item\":\"https://lizamas.mintlify.app/configuration/providers\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://lizamas.mintlify.app/configuration/providers#article\",\"headline\":\"Configuring Providers: Claude, Codex, OpenCode, and More\",\"name\":\"Configuring Providers: Claude, Codex, OpenCode, and More\",\"description\":\"Liza wraps provider CLIs directly — no API keys required. Configure Claude Code, Codex, OpenCode, Kimi, Mistral, or Gemini for use with Liza.\",\"url\":\"https://lizamas.mintlify.app/configuration/providers\",\"mainEntityOfPage\":{\"@id\":\"https://lizamas.mintlify.app/configuration/providers#webpage\"},\"dateModified\":\"2026-06-11T00:12:49.953Z\",\"publisher\":{\"@id\":\"https://lizamas.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://lizamas.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Liza\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Liza\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/configuration/providers.md","siteName":"Liza","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"What is Liza? Hardened Multi-Agent Coding Explained","sidebarTitle":"Introduction","href":"/introduction"},{"title":"Liza Quickstart: Install, Set Up, and Run Your First Session","sidebarTitle":"Quickstart","href":"/quickstart"},{"title":"Install Liza CLI on macOS, Linux, and Windows (WSL2)","sidebarTitle":"Installation","href":"/installation"}]},{"group":"Core Concepts","pages":[{"title":"Behavioral Contracts: How Liza Keeps Agents Accountable","sidebarTitle":"Behavioral Contracts","href":"/concepts/behavioral-contracts"},{"title":"Liza's Three Operating Modes: Pairing to Multi-Agent","sidebarTitle":"Modes","href":"/concepts/modes"},{"title":"Multi-Agent Architecture: Roles, Blackboard, and Worktrees","sidebarTitle":"Architecture","href":"/concepts/multi-agent-architecture"},{"title":"Liza Skills: 25 Composable Capabilities for Coding Agents","sidebarTitle":"Skills","href":"/concepts/skills"}]},{"group":"Modes","pages":[{"title":"Pairing Mode: Human-Supervised AI Coding Sessions","sidebarTitle":"Pairing","href":"/modes/pairing"},{"title":"Adversarial Pairing: Doer and Reviewer Agent Sessions","sidebarTitle":"Adversarial Pairing","href":"/modes/adversarial-pairing"},{"title":"Multi-Agent Mode: Autonomous Goal-to-Code Pipeline","sidebarTitle":"Multi-Agent","href":"/modes/multi-agent"}]},{"group":"Configuration","pages":[{"title":"Global Setup: Install Liza Contracts, Skills, and Tools","sidebarTitle":"Global Setup","href":"/configuration/global-setup"},{"title":"Initialize a Liza Project with liza init: Complete Guide","sidebarTitle":"Project Init","description":"Run liza init in your project directory to create contract symlinks, provider hooks, state.yaml, and the integration branch for a Liza coding session.","href":"/configuration/project-init"},{"title":"Configuring Providers: Claude, Codex, OpenCode, and More","sidebarTitle":"Providers","href":"/configuration/providers"},{"title":"Customizing AGENT_TOOLS.md for Your Liza Tool Contract","sidebarTitle":"Agent Tools","description":"AGENT_TOOLS.md is the agent tool contract. Customize it to match your installed tools or agents will waste turns calling tools that don't exist.","href":"/configuration/agent-tools"}]},{"group":"Guides","pages":[{"title":"Writing a Goal Document for Liza Multi-Agent Sprints","sidebarTitle":"Writing a Goal","href":"/guides/writing-a-goal"},{"title":"Liza Sprint Lifecycle: Goal Decomposition to Merged Code","sidebarTitle":"Sprint Lifecycle","href":"/guides/sprint-lifecycle"},{"title":"How to Recover from Crashed Agents and Stuck Tasks","sidebarTitle":"Recovery","href":"/guides/recovery"},{"title":"Liza Recipes: Common Workflows, Commands, and Patterns","sidebarTitle":"Recipes","href":"/guides/recipes"}]},{"group":"Reference","pages":[{"title":"Liza CLI Reference: Commands, Flags, and Workflows","sidebarTitle":"CLI Reference","href":"/reference/cli"},{"title":"Liza Provider Compatibility: Claude, Codex, and More","sidebarTitle":"Providers","href":"/reference/provider-compatibility"},{"title":"Troubleshooting Liza: Agents, Locks, and State Errors","sidebarTitle":"Troubleshooting","href":"/reference/troubleshooting"}]}]}]},"basePath":"","title":"Configuring Providers: Claude, Codex, OpenCode, and More - Liza","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}