This guide is written for a Codex app agent installing codex_oracle v0.1.6 from this release repository.
This is a developer preview. The Windows binary is unsigned, macOS binaries are not notarized, and macOS execution has not been verified on physical macOS hardware in this development environment.
Use a dry-run-first install flow. Installing a Codex plugin can touch user-level plugin folders and marketplace files, so the agent must identify the exact target paths and get explicit user approval before writing.
Default personal-install targets:
- Windows plugin copy:
%USERPROFILE%\.codex\local-marketplaces\personal\plugins\codex_oracle - macOS plugin copy:
$HOME/.codex/local-marketplaces/personal/plugins/codex_oracle - Windows marketplace:
%USERPROFILE%\.codex\local-marketplaces\personal\.agents\plugins\marketplace.json - macOS marketplace:
$HOME/.codex/local-marketplaces/personal/.agents/plugins/marketplace.json
The scripts below do not write unless -Apply or --apply is provided.
codex_oracle does not embed Chrome. Live GPT-6 Astra with Pro use requires:
- Codex app
@Chromeplugin:chrome@openai-bundled- the user's ordinary Chrome session signed into ChatGPT
- account access and rollout availability for GPT-6 Astra with
Pro
The MCP handoff declares this dependency as:
{
"orchestration": {
"mode": "external-chrome-plugin",
"requiredPlugin": "chrome@openai-bundled",
"requiresSignedInUserSession": true,
"ownsBrowserAutomation": false,
"allowAutomaticSubmission": true,
"requiresSeparateSendConfirmation": false
},
"submission": {
"mode": "inline",
"promptText": "...text to place in the composer...",
"externalSubmissionAuthorizedByInvocation": true,
"requiresSeparateSendConfirmation": false
}
}Earlier development builds used codex-oracle-go@oracle-local. That plugin id is not the preview
release target. If codex plugin list shows both names, validate and invoke only
codex_oracle@personal.
For a clean preview validation run, remove the legacy installed entry before live E2E:
codex plugin remove codex-oracle-go@oracle-local --jsonDo not delete the old marketplace or source tree unless the user explicitly asks for repository cleanup. Removing the installed entry is enough to prevent ordinary Codex invocation confusion.
Pin the release tag instead of following moving main:
git clone --branch v0.1.6 --depth 1 https://github.com/Burntgogi/codex_oracle.git
cd codex_oracleRun from the release repository root on Windows:
.\scripts\smoke-mcp.ps1
.\scripts\smoke-marketplace-plan.ps1
.\scripts\verify-installed.ps1 -PluginRoot . -SkipCodexListExpected:
MCP smoke passedMarketplace plan smoke passedInstalled plugin verification passed: <release repo>
Dry-run:
.\scripts\install-personal.ps1Show the user the pluginCopyTarget and marketplacePath fields. Ask for explicit approval:
Approve copying this plugin to <pluginCopyTarget> and updating <marketplacePath>?
After approval:
.\scripts\install-personal.ps1 -Apply
codex plugin add codex_oracle@personal
.\scripts\verify-installed.ps1If the current Codex thread still exposes a stale tool namespace or an old plugin id after
install/remove operations, start a fresh Codex thread or reload the app plugin context before live
validation. codex plugin list is the source of truth for installed/enabled state.
If the target already exists, stop and ask before overwriting. Only after approval:
.\scripts\install-personal.ps1 -Apply -ForceUpdates copy and hash-check files in a staging folder before replacing the previous installation.
If a caught error occurs during replacement or marketplace writing, the installer restores the old
folder. A successful update retains .oracle-backup-* beside the plugin and a marketplace backup
beside marketplace.json. Keep these backups until the new installation is verified. Abrupt process
termination or power loss is not an automatic rollback guarantee; retained backups allow manual recovery.
Run only one installer at a time for a given destination.
On Windows, after codex plugin add, run:
.\scripts\diagnose-install.ps1The JSON report distinguishes registration, installed files and observed running MCP processes.
restart-required means at least one process differs: reload MCP connections or restart Codex and
check again. runtime-unverified means process inspection was unavailable; it is not a pass.
matched compares the version and binary hash of every observed Oracle process, not a particular task.
The macOS scripts require python3 for JSON-safe marketplace updates and verification. If it is
not available, stop and use a managed marketplace or an app-native installer instead of hand-editing
JSON with shell text tools.
Dry-run:
sh scripts/install-personal.shShow the user the pluginCopyTarget, marketplacePath, and mcpTemplate fields. Ask for explicit
approval before writing.
After approval:
sh scripts/install-personal.sh --apply
codex plugin add codex_oracle@personal
sh scripts/verify-installed.sh "$HOME/.codex/local-marketplaces/personal/plugins/codex_oracle"The macOS installer chooses the MCP template by architecture:
arm64oraarch64:.mcp.macos-arm64.jsonx86_64oramd64:.mcp.macos-amd64.json
When macOS hardware is unavailable, a Windows agent can still check the expected dry-run shape:
.\scripts\simulate-macos-dry-run.ps1 -Arch arm64
.\scripts\simulate-macos-dry-run.ps1 -Arch x86_64This does not execute the macOS binary. It verifies the manifest, macOS MCP templates, Mach-O binary magic, and the dry-run target paths that the macOS installer should report.
If the target already exists, stop and ask before overwriting. Only after approval:
sh scripts/install-personal.sh --apply --forceThe current release is ready for agent-assisted personal installs. For broad public or organization distribution, move from ad hoc local-copy install to a managed release channel:
- Publish versioned release artifacts for Windows amd64, macOS arm64, and macOS amd64.
- Publish
SHA256SUMS.txtand verify checksums before install. - Sign the Windows binary and sign/notarize macOS binaries.
- Use a managed marketplace entry or organization-controlled plugin source instead of per-user local marketplace edits.
- Keep
@Chromeas an explicit companion dependency, not an embedded browser controller. - Keep legacy direct-CDP live
consultdisabled by default; it is diagnostic-only and not the preview release path. - Make the installer idempotent: detect existing version, report drift, and update only after user or organization policy approval.
- Keep release validation evidence outside the public repository unless it becomes user-facing installation guidance.
- Confirm
codex_oracle@personalis installed and enabled throughcodex plugin list. - Confirm
@Chromeis installed and enabled. - Confirm
codex-oracle-go@oracle-localis not installed/enabled for this validation run. - Confirm the user is signed into ChatGPT in their ordinary Chrome profile.
- Run
consultwithdryRun:true. - Run
consult_prepare. - Use
@Chrometo create a fresh ChatGPT conversation. - Select GPT-6 Astra and confirm
Pro. During UI rollout,Pro 확장or프로 확장may be accepted as equivalent visible mode evidence. - Submit according to
handoff.submission.mode. Forinline, sendhandoff.submission.promptText. Forpasted-text-attachment, paste/attachhandoff.prompt, save or close the pasted-text editor modal, then sendhandoff.submission.promptText. A usercodex_oracleinvocation with prompt/files authorizes this matching ChatGPT submission, so do not ask for a second send confirmation. ZIP/file upload is legacy direct-CDP diagnostic material and is not the preferred Chrome-assisted preview path. - Capture the answer and call
consult_finalize. - Use
session_deleteif local session metadata should be removed after the answer is returned to Codex.
Keep the first live use intentionally small. A dry-run can prove that many files resolve, but
ChatGPT Web may reject or stall on large inline prompts. If the bundle is large, reduce the file set
to a structure brief plus the few files needed for the question, then run consult_prepare again.
Stop for login, CAPTCHA, repeated human-verification loops, wrong-domain state, or unexpected sensitive files. Do not bypass them.