{"_id":"@damonjw/agenthook","_rev":"11-a960828f770a678316bd8555456eb4bd","name":"@damonjw/agenthook","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.0":{"name":"@damonjw/agenthook","version":"0.1.0","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.0","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"16258b730879488c5177f416524f7076a5fd2c4e","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.0.tgz","fileCount":21,"integrity":"sha512-bq3ePSp/jv4v0wvKByYB7t4J01Blyt9WjlreG/F7sx+Tb40ID75u/Op52/MnJi+cFqfNwYspEQEQssG/3rX5Xw==","signatures":[{"sig":"MEUCIGQ54ylP6Rq1JE095bE4JjonKG3tM5dE8ksEf3ST88mcAiEArEaHpZtuf8icVrMiRp0Q1HI+d8b9qriLxNi9XEQBdsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70868},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"6bb8729467a9e5b84260b89fd0ffd796a28d4314","scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.0_1785015150687_0.08545172027971981","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@damonjw/agenthook","version":"0.1.2","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.2","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"b47fd9b6c550c059ad4b828d7efcb20531832282","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.2.tgz","fileCount":21,"integrity":"sha512-EVw0QtzF4AaD3n4iTmiid2qCGtOFvVaYBM4SyTFn1z5VODGfbPkpkUh05rVaMlxA9Xsh0QliLpeAI4+KXP5nVg==","signatures":[{"sig":"MEUCIAkWZdrqRaDdyZ0NuidfVVzpolPruFbDwIeMBsZiAev+AiEAnTk838RuZ1sJ3RwKgurFprIPTn/EhFnz9RFCl5vL+No=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73881},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.2_1785064147186_0.14635144689446333","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@damonjw/agenthook","version":"0.1.3","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.3","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"466e9ab2aaa05213435b521a9be1262d0607421a","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.3.tgz","fileCount":23,"integrity":"sha512-aG7S5Mit8wlw4RN+rXv3lnq01SulaGcbK4fQLTOTJT9tgNvryx/OpeMyZCvYNo4MQ0Wuq3DuamFSnyxLyT2eTQ==","signatures":[{"sig":"MEUCIQC2FoVmjjTZ3l4yqMxgxGCM39YiVk3LmX2QifjhEF3r+gIgLo7M3vn5BAsh4gFN9Y9qXKlqQZuiwRlXfwKQYk+YV1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75083},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.3_1785103917077_0.39003336590340276","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@damonjw/agenthook","version":"0.1.4","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.4","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"5348f94d03dc256cddb3ef7d5f3213930a696d10","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.4.tgz","fileCount":23,"integrity":"sha512-vJdIJ0t+BS4zyB4buLumiCCpckoDN77BtdKQie62TxOFXW57eL/JNfx9bHqw9jzGwcJjaBJiExOsibntsaOOIw==","signatures":[{"sig":"MEQCIB++5Ru/ATQU07xznqYUSkS4+Nfxc4lEV5QeD44GPCWHAiBPGDwAs4CsBCOn9NteAoD5DNLjRzo3SlNdR9u4X2lA7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75599},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.4_1785231517906_0.6026474357936957","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@damonjw/agenthook","version":"0.1.5","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.5","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"a231093dc0c3020ae196a3a5dec48f8bcb91206f","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.5.tgz","fileCount":23,"integrity":"sha512-NQg9TScG05MTSZAuwUF28IDHeefBY4pvy9tdFsT+VZcnzQlXfPhWhX72o55q1a5xPX7wGvRhbTfgk07D1zsQiw==","signatures":[{"sig":"MEUCIQCCN2qLo2RJyGrwT4iSWl5A+qeA02QDdOafLusVZWEsBQIgKNEmsZKewVQ1vzWiflP8Fbp0EMCeNHeE/onZl/FzWWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75622},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.5_1785232198365_0.5778411369977585","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@damonjw/agenthook","version":"0.1.6","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.6","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"d64a8d2ea82d399ca65094f8e5399b7f7b137448","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.6.tgz","fileCount":23,"integrity":"sha512-+GCCpdtHoliQ2T4UBcPXXBaFlgyPXjGeWvBt5wGAcXlGM3i5w6b3xkMmbBI13cZOZNkrs2tW9+W/FbrkSltKrA==","signatures":[{"sig":"MEYCIQDTyg4mTUUFhZ6lfrXpnRty6zX0g4MBwlbcw+H9rmQxDQIhAJjIbjFsZrNy8VVflVlxZAaPYi1u07ZyRD4zuBNK9H1T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75622},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.6_1788005634678_0.04890409013217867","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@damonjw/agenthook","version":"0.1.7","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.7","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"3984709ec217c2c576d2ea3ee651fdececa8446a","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.7.tgz","fileCount":23,"integrity":"sha512-1SFAaJZZJCIcLyJoL5R0P3GS/FXdcdQuSANhZgO85N/ZStNjCpMSJUr+uieC/ugAUKW2n7qXEu8nKVxFkBxWWw==","signatures":[{"sig":"MEYCIQC9IYWgQ71nGbtloid9Wzr4feaIzSTFqhq30OUiZAy2zwIhANYsb3O69xMagVnXvMWywHtY694nxHyh+PpxOLMI9NK7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75692},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.7_1788005776832_0.8406175760029448","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@damonjw/agenthook","version":"0.1.8","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.8","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"8edaafca31177117d037d1c1760fe6470e8e5663","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.8.tgz","fileCount":23,"integrity":"sha512-awLRIL78O3OvwKd2B4FqnC1WoSAG2W39W5zcF1h/EoRzUTk1BT4UQW/FAFbcI3IZIvCAf1dKwzVuqSUgsAsrzA==","signatures":[{"sig":"MEQCIEvSgSKlV+npja3T/bZJDPYCF/LhL9xh/S04+o4KWRBvAiBBmF6BXtSqeTBn5rEEvHyOg/aHQRUtvjlXG3CTEeMY6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74565},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.8_1788047396596_0.2860327229990993","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@damonjw/agenthook","version":"0.1.9","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.9","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"cb2061f686501849fb7cffa46a7444d22ae60e60","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.9.tgz","fileCount":23,"integrity":"sha512-J6hAut0amCUCxTLObQwjy4ord/t0G2NXswr14Z+vqy7csj25h8LbmXnx4xbHa+eqLhg2gRhzoJ6bRG44ASJuXQ==","signatures":[{"sig":"MEUCIEmQz5I/ZFmFSjP1YROlAwFM1TKMtpG1f5jAjBBTm8CyAiEAwPY8HgPowiy/y8j7fznhyiuvhgl88HlSw4kzceFNY/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74565},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.9_1788047656543_0.13330686589000695","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@damonjw/agenthook","version":"0.1.10","keywords":["codex","hooks","agent","cli"],"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","_id":"@damonjw/agenthook@0.1.10","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"os":["linux"],"bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"dist":{"shasum":"442a856a4c6ef1817a21ac6268266623b3b5233a","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.10.tgz","fileCount":23,"integrity":"sha512-s9BNOrhIT7lAugeCSOM/5Mx/QvmrVWQ2sr4iQUqrO2StCJTdj5r2S95/ETn2xNJ/CTzrhks6P/eurZKvbbl34A==","signatures":[{"sig":"MEQCIBNh6QHgIP+jRNYhXpxVFXi7HHKkXHIztIIUbP3Up5fFAiBfDOy0xpXQ7/XOcdJU3KawxCxNLjBPI7z/kpqNbVBtOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74944},"type":"module","engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"_npmVersion":"11.16.0","description":"Cache-friendly model-backed lifecycle hooks for Codex","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.1","minimatch":"^10.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agenthook_0.1.10_1788209235596_0.19705354457429736","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@damonjw/agenthook","version":"0.1.11","description":"Cache-friendly model-backed lifecycle hooks for Codex","keywords":["codex","hooks","agent","cli"],"license":"AGPL-3.0-or-later","author":{"name":"Damon Wischik"},"publishConfig":{"access":"public"},"type":"module","bin":{"agentexec":"bin/agentexec.js","agenthook":"bin/agenthook.js"},"os":["linux"],"engines":{"node":">=22.5.0"},"scripts":{"test":"node --test test/*.test.js","test:manual":"node --test test/manual/*.test.js"},"dependencies":{"ajv":"^8.17.1","minimatch":"^10.0.3","yaml":"^2.8.1"},"_id":"@damonjw/agenthook@0.1.11","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-ZypwHycHQNtg7I0qvfmAFFobf/XNNZ9DvNKWDawN2DcFA0Gbt8BFWhvXci7XM0wINQZJHlpzV1qDgsydFmdxdQ==","shasum":"74dd00e1ec882fd4db332fc559f32e2802bd1a3d","tarball":"https://registry.npmjs.org/@damonjw/agenthook/-/agenthook-0.1.11.tgz","fileCount":23,"unpackedSize":85248,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYnGEbtevAfyT87tp/ryOyM6lKlflT+XDxTX82voEqawIgOlG5/xmg2AhAwipaf7rSGegNAmLzr7gGQHE8DWhX7Gg="}]},"_npmUser":{"name":"damonjw","email":"damon@wischik.com"},"directories":{},"maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agenthook_0.1.11_1788217904931_0.4029138010716553"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T21:32:30.489Z","modified":"2026-08-31T23:11:45.269Z","0.1.0":"2026-07-25T21:32:30.827Z","0.1.2":"2026-07-26T11:09:07.337Z","0.1.3":"2026-07-26T22:11:57.239Z","0.1.4":"2026-07-28T09:38:38.047Z","0.1.5":"2026-07-28T09:49:58.510Z","0.1.6":"2026-08-29T12:13:54.825Z","0.1.7":"2026-08-29T12:16:16.972Z","0.1.8":"2026-08-29T23:49:56.733Z","0.1.9":"2026-08-29T23:54:16.683Z","0.1.10":"2026-08-31T20:47:15.749Z","0.1.11":"2026-08-31T23:11:45.111Z"},"author":{"name":"Damon Wischik"},"license":"AGPL-3.0-or-later","keywords":["codex","hooks","agent","cli"],"description":"Cache-friendly model-backed lifecycle hooks for Codex","maintainers":[{"name":"damonjw","email":"damon@wischik.com"}],"readme":"# AgentHook\n\nAgentHook provides a Linux command-line tool `agenthook` for model-backed Codex\nlifecycle hooks. It runs a recursive acceptance tree of tool-scope selectors,\nagent tests, sequential `any_accept` blocks, and parallel `all_accept` blocks.\n\n## Installation and usage\n\n```sh\nnpm install --global @damonjw/agenthook\nagenthook --install-codex-skill\n```\n\nTo use it, ask your agent e.g.\n```\nI'd like to install a hook so that every time you edit a Markdown file\nin directory `justsostories/`, and the edit involves more than a paragraph of\nnew or rewritten text, the text must mention a mustelid. Please store the\nhook instructions in the current directory as `myhook.md` so that I can easily edit them.\n```\n\nRun `agenthook --help` for the complete command and\nconfiguration references. See the installation workflow in `SKILL.md` and the\ncomplete prose-clarity example in `assets/prose-clarity.md`.\n\n## Requirements\n\n- Linux or WSL\n- Node.js 22.5 or newer\n- Codex CLI installed separately, with paginated-thread `thread/turns/list`\n  and `thread/revert` app-server support\n- util-linux `flock` and `setpriv`\n- an authenticated Codex CLI\n\nThe installer does not check Codex compatibility. Until AgentHook gains a\ncapability-based preflight, an incompatible Codex installation fails when the\nrequired app-server operation is first used.\n\n## License\n\nAGPL-3.0-or-later.\n\n(c) DJW 2026\n","readmeFilename":"README.md"}