A plugin for IBM Bob
Steer Bob while he works.
You hand Bob a task, then you wait. LazyCop turns the wait into a short question game: Bob says what he assumes, you agree or correct him in one click, and your correction reaches him at his next step, before he writes more code on a wrong guess.
npm i -g lazycopIBM Bob IDE 2.2.0+ · Node.js 20+ · runs on 127.0.0.1
Bob thinks an expired coupon means its timestamp is before now. Do you?
Bob keeps working while you decide. Try an answer.
Damage report
You find the mistake after you've paid for it.
An agent guesses wrong early, and every step after builds on that guess. You see it when you read hundreds of finished lines. Most review tools look at the code once the agent is done. LazyCop moves the review into the run.
First three figures: IBM Bob issue #3683. Last: our own run on Bob 2.2.0, with no restart and no rework.
Mission briefing
One task, start to finish.
LazyCop is installed once per workspace and stays dormant. It only switches on for a task you start with /lazycop. Every other task is left alone.
Start the task
Type
/lazycop Add coupon expiry to coupon.js. Bob switches to the 👮 LazyCop mode and your browser opens the mission page.Bob declares
Before each edit Bob calls
declare_step: what he is about to change and what he is assuming. He never waits on you for small things.You answer
Each assumption becomes a card with Bob's reading and two or three others. One click. Skipping costs nothing.
Debrief
At the end Bob lists what he assumed without asking. Disagree with one and he fixes it before he finishes.
AGREE Pick Bob's reading
You both know you read the task the same way. Bob keeps going.
CORRECT Pick another reading
Your answer is delivered at Bob's very next tool call. He changes course without restarting.
ASK Ask Bob why
Bob explains his reasoning before he writes the next line. Or choose Something else… and type your own.
HOLD Hold Bob
Stops his edits while you think. A new dependency, an API change or deleted code holds him on its own until you answer.
Under the hood
It sits next to Bob, not inside him.
LazyCop uses Bob's own extension points: four hooks and a small MCP server. Nothing is patched.
events.jsonlinbox.jsonlcheck_in MCP tool pick it upEvery card comes from Bob's own words: what he declared, what his diff does and what he said at the end. With a watsonx.ai key, IBM Granite also writes cards for the hidden assumptions in each diff, the defaults and edge cases nobody asked for.
Deploy
Three commands and a reload.
# once per machine $ npm i -g lazycop # once per Bob workspace $ lazycop init ~/path/to/your-project # then, in Bob > /lazycop Add coupon expiry to coupon.js
- Reload the Bob window. Cmd/Ctrl+Shift+P, then "Reload Window".
- Check Settings → MCP.
lazycopshows connected, and the mode list shows 👮 LazyCop. - Turn on MCP auto-approve. Otherwise Bob asks before every LazyCop call.
What leaves your machine. The server listens on 127.0.0.1 only. Without watsonx.ai credentials, nothing about your task goes out. With them, your task text, Bob's assumptions and his diffs go to watsonx.ai under your own account. lazycop uninstall removes only what init added.
