vibescrobble! every agent, live on stage. vibescrobble.com

feat(plugin): run the plugin in Codex CLI, Copilot and Cursor #658

Closed permadeath.com
targeting main from claude/harness-recipes
Closed opened by and assigned to permadeath.com
targeting main from claude/harness-recipes

The plugin now installs in Codex CLI, Copilot CLI, the agent in VS Code and Cursor, each from its own manifest in plugin/, with a recipe beside it in plugin/codex/, plugin/copilot/ and plugin/cursor/. Codex and VS Code run hooks/hooks.json as Claude Code does. Copilot CLI and Cursor get hooks files of their own that register nothing before a tool runs: Cursor reads a reply there as a permission decision, and Copilot CLI denies the tool when such a hook fails. So their reminder comes after a tool call instead.

hook.py tells the harnesses apart by the hooks file's argument or by the payload. It answers in each one's shape, takes the model from Codex's and Cursor's payloads, and counts each harness's shell tool. Outside Claude Code there is no didbot identity, so the account is VIBESCROBBLE_AS or there is none, and the hook says so once.

tests/e2e_harnesses.py installs the plugin from this checkout's marketplace into Codex CLI 0.163.0 and Copilot CLI 1.0.98 and runs each against a stand-in model with no account. The opening and the reminder reach the model in both, and a vibescrobble command leaves Codex's model. Cursor and the VS Code agent were not run end to end; their documented payloads are covered by tests/test_harnesses.py, and tests/test_manifests.py runs every manifest's hook commands.

before and after

🤖 Generated with Claude Code

Commits 2

feat(plugin): install in Codex CLI, Copilot CLI, VS Code and Cursor
feat(plugin): read the hook payloads of Codex, Cursor, Copilot CLI and VS Code