Claude Code · Cursor · Codex · Aider · Cline · Copilot · Gemini CLI
Your fingerprint is the human in the loop
AI coding agents want sudo, git push and your API keys. immurok lets them have those, one command at a time, after a touch on a real fingerprint sensor. Say no, and the command is killed.
The problem with agents and privileges
An agent that writes code also wants to run the tests, restart the daemon, push the branch and read the deploy key. Today the choices are bad: give it passwordless sudo and a long-lived SSH key and hope; have it stop for a password every two minutes; or sandbox it so hard it cannot finish the job. Agents do not have fingers, which turns out to be the useful part.
The wrap
imk run --agent -- sudo systemctl restart api
imk run --agent -- git push origin main
imk run --agent --env-file .env -- python deploy.py
When the agent runs a command through imk run --agent --, the immurok app puts an overlay on your screen with the verbatim command, no summary and no paraphrase. Touch the key and the subprocess runs. Close the overlay, or let 30 seconds pass, and the subprocess is sent SIGTERM and the wrap exits with code 77, which the agent reads as “the user said no” and does not retry.
One touch covers the whole subprocess. Inside it, sudo finds an active five-minute pre-authorization and skips its prompt, SSH signing and secret reads are satisfied by the same touch, and a git push followed by an authenticated curl both work without a second overlay. The moment you dismiss the overlay the pre-authorization drops and the subprocess dies mid-flight, so there is no half-applied state.
Secrets the agent never sees
# .env
OPENAI_KEY=imk://api/openai
GITHUB_TOKEN=imk://api/github
Store API keys on the device and put imk:// URIs in .env instead of the values. imk run --agent --env-file .env -- ... resolves them after your touch and injects the real values into the child process's environment at exec() time. The agent, the parent shell and the agent's transcript only ever see the URI. The overlay bolds every imk:// URI in the command so you always know which keys are being read.
Why hardware, and not a password prompt
- One approval, brokered. A software password prompt belongs to the process that raised it. The immurok app sees
sudo, SSH and secret reads together, so one touch can cover all three and one dismissal can cancel all three. - Every approval is physical. There is no unattended mode. Walk away from the desk and the agent cannot push, cannot
sudo, cannot read a key. - No fatigue. The agent is not interrupted at every privilege boundary and you are not asked to rubber-stamp a dozen prompts. One command in the overlay, one touch.
Drop it into your agent
The imk-skill repository is a single Markdown skill that teaches an agent when to wrap a command, when not to, and how to exit cleanly when refused.
| Agent | How to install |
|---|---|
| Claude Code | /plugin marketplace add immurok/imk-skill then /plugin install imk-tools@imk |
| Cursor, Cline, Continue, Windsurf | Vendor the skill into .cursorrules, .clinerules or .continue/rules.md |
| Codex, Aider, Gemini CLI | Append it to AGENTS.md, CONVENTIONS.md or GEMINI.md |
Once loaded, the agent recognises the triggers (imk on $PATH, an ~/.immurok/ directory, imk:// URIs in .env) and starts wrapping privileged commands on its own. The full design is in A fingerprint gate for your AI coding agent.
Common questions
Which agents does it work with?
Any agent that runs shell commands and reads a rules file. Claude Code has a plugin; Cursor, Cline, Continue, Windsurf, Codex, Aider, Gemini CLI and GitHub Copilot take the skill as a rules or instructions file. imk itself is a CLI, so anything that can call a program can use it.
Is this a sandbox?
No, it is a gate. immurok does not restrict what the agent can see or write; it makes the privileged step wait for a human. Use it with whatever sandboxing you already have.
What if I am not at my desk?
The command does not run. The overlay times out after 30 seconds, the subprocess is killed with SIGTERM and the agent gets exit code 77. There is no way to approve remotely or in advance, on purpose.
Does the agent ever see the resolved secret?
No. Secrets are released from the key after your touch and injected only into the child process's environment. They do not pass through the agent, its shell or its transcript, and the overlay shows you which imk:// URIs are about to be resolved.
macOS, Windows and Linux. The imk CLI and skill are open source.