pi-extension-codex-apply-patch

Pi extension that adds Codex-style CFG constrained apply_patch with local verification

Packages

Package details

extension

Install pi-extension-codex-apply-patch from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-extension-codex-apply-patch
Package
pi-extension-codex-apply-patch
Version
0.1.2
Published
Feb 18, 2026
Downloads
63/mo · 12/wk
Author
vishyfishy2
License
MIT
Types
extension
Size
73.4 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-extension-codex-apply-patch

Pi extension that adds Codex-style apply_patch with:

  • Remote constraint: sends apply_patch as a custom freeform tool with Lark grammar to Codex Responses API
  • Local constraint: parses and verifies patch format before applying filesystem changes
  • Model gating: activates only for gpt-5.2-codex* and gpt-5.3-codex*
  • Hard tool policy:
    • on codex models, edit and write are disabled (use apply_patch)
    • apply_patch is disabled for non-codex models
    • warning is shown when switching from codex to non-codex after apply_patch has been used in the session
  • Interrupted-turn recovery: orphaned custom tool calls are auto-completed with synthetic cancellation outputs so follow-up prompts do not fail with missing custom_tool_call_output
  • Codex prompt parity (patch section): injects Codex ## apply_patch instructions for codex 5.2/5.3 turns
  • Live patch counters: shows streaming +X -Y path lines while patch args arrive and while hunks/files are applied
  • Diff UI: apply_patch renders a colored diff using pi's native diff renderer (expand tool output to view full diff)

Install

pi install npm:pi-extension-codex-apply-patch

Or for local dev in a project:

pi install ./

How it works

  1. Registers an apply_patch tool in pi
  2. Enforces tool policy:
    • on codex models, removes/blocks edit and write
    • when switching back to non-codex, restores edit/write if this extension removed them
    • exposes apply_patch only on codex 5.2/5.3 models
  3. Overrides the openai-codex provider stream path via registerProvider(... streamSimple ... )
  4. When model is codex 5.2/5.3 family, apply_patch is sent as:
    • type: "custom"
    • grammar format (syntax: "lark")
  5. Parses Codex custom_tool_call events and maps them into pi tool calls
  6. Sends tool results back as custom_tool_call_output

Local patch format

Expected patch envelope:

*** Begin Patch
*** Add File: hello.txt
+Hello
*** End Patch

Supports:

  • *** Add File: <path>
  • *** Delete File: <path>
  • *** Update File: <path> (+ optional *** Move to: <path>)
  • hunks with @@ and lines prefixed by , +, -

Path behavior:

  • matches pi write semantics for relative/absolute paths
  • relative paths resolve against current working directory

Development

pnpm install
pnpm typecheck
pnpm test