ccChat-general

Codex setup
audit & cleanup plan

Updated: 2026-07-10· Version 1

Your Codex setup is fundamentally healthy. The migration did not corrupt it, but it left one real duplicate: an older standalone Impeccable skill alongside the enabled current Impeccable plugin. This audit separates active behaviour from caches and gives you a calm, reversible cleanup order.

6
Active Codex plugins
1
Active global hooks
2
Duplicate Impeccable sources
1 cleanup
4
Codex direct skills

01The mental model

These things are related, but they are not interchangeable.

ThingWhat it isPut your setup here whenYour current example
AGENTS.mdPersistent instructionsYou want Codex to behave a certain way in every relevant repoGlobal style, commit, and autonomy rules
SkillReusable workflow instructions, optionally with scripts and referencesThe task recurs and needs a playbookreadout, design-styles, impeccable
PluginInstallable distribution bundle, often containing one or more skills plus hooks, commands, or MCP/app wiringYou want a maintained package or to share a workflowImpeccable, GitHub, Playwright
HookA command run around an agent lifecycle eventA mechanical rule must run automaticallyYour post-edit formatter; Impeccable UI checker
config.tomlCodex client configuration and enabled pluginsYou are changing client defaults, trust, marketplaces, or MCPModel, plugin enablement, trusted projects

Codex’s own model is: AGENTS.md shapes behaviour, skills package reusable processes, and plugins distribute skills with richer integrations. A plugin may contain a skill; that is exactly what Impeccable does. Codex customization guide · plugin build guide

02What is active now

This is the stuff that can actually affect a new Codex task today.

AreaCurrent stateVerdict
Global AGENTS.mdA valid Codex-native adaptation of your Claude global instructionsGood base, but it has drifted from Claude’s response-style and commit exceptions
Global config.tomlgpt-5.5, medium reasoning, pragmatic personality; trusted project list; six plugins enabledHealthy
Codex global hooksFormatter hook enabled; LSP pre-edit and session-start hooks explicitly disabledFormatter is active. The two LSP hooks are dormant, not broken
Impeccable pluginEnabled from the impeccable marketplace, version 3.9.1Keep
Impeccable plugin hookTrusted post-tool-use hook runs after Edit, Write, or MultiEditActive for UI edits; useful, but it adds feedback after every frontend file edit
Standalone ImpeccableSeparate global skill at ~/.agents/skills/impeccable, older than the plugin copyRemove from Codex discovery after checking no other agent needs it
Imported Claude env varsSeveral CLAUDE_CODE_* / ENABLE_* variables survive in Codex shell policyHarmless clutter for Codex itself; remove after validating they are not deliberately consumed by your shell tooling
Success

The Impeccable plugin itself is installed once and enabled once. The duplicate comes from a separate global skill directory that pre-dates the plugin. Codex is correctly discovering both sources, then displaying both an un-namespaced and plugin-namespaced skill entry.

03Impeccable: what is weird and what to do

This is the only cleanup I would actively recommend from this audit.

flowchart TD
A[Codex discovers global skills] --> B[~/.agents/skills/impeccable]
C[Enabled Impeccable plugin v3.9.1] --> D[plugin-bundled impeccable skill]
C --> E[post-edit UI hook]
B --> F[older standalone skill entry]
D --> G[second current skill entry]
F --> H[ambiguous duplicate discovery]
G --> H

The sources are not identical revisions. The standalone skill was last changed on April 30; the plugin copy was refreshed today. Its content hashes differ. The plugin has the current packaged skill and a post-edit hook; the standalone copy is simply an older full workflow.

Do not delete cache directories by hand to solve this. The active plugin is stored and refreshed through Codex’s plugin system. The standalone ~/.agents/skills/impeccable directory is the source that creates the duplicate.

04Claude comparison

The two setups have the same foundation, but Codex is intentionally less opinionated in a few places.

AreaClaude CodeCodexAssessment
Global instruction file~/.claude/CLAUDE.md~/.codex/AGENTS.mdSame purpose; global vs repo-local precedence maps cleanly
Core code conventionsMostly copiedMostly copiedConsistent
Response styleClaude includes your compact, direct response rules and Object FloorMissingMain behavioural gap if Codex feels less like your Claude setup
Commit rulesClaude allows commits in named personal repos and bans attribution linesCodex omits bothWorth consciously porting if you want parity
Subagent policyClaude instructs parallelisation for large workCodex currently asks for explicit user requestA deliberate mismatch, not breakage
Skills46 direct global skills, mostly symlinked from ~/.agents4 direct skills plus plugins/system skillsExpected: Codex has a smaller direct-skill surface, not a failed migration
PluginsClaude has its own installed-plugin registry and marketplacesCodex has enabled plugin entries and marketplace records in config.tomlBoth are valid, separate package systems
Global hooksClaude settings define Stop, SessionEnd, PostToolUse, NotificationCodex has PostToolUse enabled and two disabled LSP-related hooksNot equivalent; review them by behaviour, not by file count
Info

Keep the global Codex AGENTS.md short and practical. Port only the Claude rules you miss in actual use: response compactness, anonymous commit attribution, and personal-repo commit exceptions. Do not bulk-copy every Claude instruction just for symmetry.

Codex supports global guidance in ~/.codex/AGENTS.md and repo guidance nearer the working directory; closer repo guidance wins. AGENTS guidance

05Hooks: active, dormant, and worth deciding

Hooks are enforcement, not preferences. Keep them only where automatic behaviour earns its place.

HookStateWhat it doesRecommendation
Codex PostToolUse formatterEnabledFinds Oxfmt or Biome upward from the changed file, otherwise runs PrettierKeep; it is more robust than the older Claude Prettier-only hook
Codex PreToolUse LSP clientDisabledWould run cli-lsp-client claude-code-hook before Write/Edit/MultiEditLeave disabled unless you intentionally use that tool
Codex SessionStart LSP clientDisabledWould start cli-lsp-client on startup/resumeLeave disabled unless you intentionally use that tool
Impeccable PostToolUseTrusted/activeRuns a UI-change check after edits/writesKeep for now; reassess after one real frontend task
Claude global hooksActive in Claude onlyStop/session/notification patterns plus one post-tool hookThey do not automatically migrate into Codex behaviour

Codex loads hooks from hooks.json or inline config.toml tables. User-level hooks live independently from project trust; project hooks require a trusted project. Codex hook configuration

06Cleanup order

Do this in three tiny passes. Each is reversible and should be followed by a new Codex task, not a heroic configuration rewrite.

  1. 1
    Fix the real duplicate
    Move ~/.agents/skills/impeccable to a dated backup outside Codex’s global skill discovery path. Leave the enabled Impeccable plugin alone.
  2. 2
    Smoke-test the plugin
    Open a new Codex task, confirm a single Impeccable entry, then try one real UI edit. Check whether the post-edit report helps or interrupts.
  3. 3
    Choose behavioural parity
    Compare ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md line by line, then port only the response and commit rules you want Codex to inherit.
  4. 4
    Prune migration residue
    After confirming no shell tool needs them, remove the Claude-specific environment variables from Codex’s shell policy. Ignore migration prompt timestamps, imported-session records, caches, and temp staging directories.
Warning

~/.codex/plugins/cache/ and ~/.codex/.tmp/marketplaces/ look messy by design. They are not why Impeccable duplicates.

Info

Skills and plugin availability are assembled at task startup. After a cleanup or plugin change, verify in a fresh task or restart the client.

07My recommendation

The setup needs a tune-up, not a rebuild.

  1. Keep the Impeccable plugin and its hook.
  2. Retire the older ~/.agents/skills/impeccable copy from Codex discovery.
  3. Port only the Claude global-instruction deltas that you consciously want—especially response style and anonymous commits.
  4. Ignore the migration bookkeeping. It is evidence of imports and prompts, not a malfunction.

Once the duplicate is removed, the useful default is simple: use design-styles for quick/normal frontend work; use $impeccable when you want the heavier full-craft flow with its context and preflight gates.