Decisions
Why lnk-claude runs Claude Code the way it does. Link's own decisions
about harnesses are on its
Agents Decisions
page.
How does Link talk to Claude Code?
Over ACP, the Agent Client Protocol,
as it talks to every harness. Claude Code speaks it through the ACP
organization's adapter, claude-agent-acp, which keeps many sessions
in one process; lnk-claude serve is its endpoint, the harness hub
relaying Link's ACP to it over stdio.
Why does it never ask?
Because Link's sandbox guards the machine, and nobody is there to approve at a prompt. Claude Code runs in its mode that bypasses its permission prompts, which it otherwise refuses to run as root, inside Link's sandbox: its home and the files folder, and the network through Link's proxy.
Why a folder of its own?
Because ~/.claude is yours. Claude Code's settings, sessions and
CLAUDE.md for the agent are in ~/.lnk/claude/claude, so nothing
Link writes reaches the Claude Code you run yourself, and removing the
agent removes only what's Link's.
Why an API key only?
Because an API key is a credential Link's secrets and proxy can hold for it. Signing in with a subscription keeps a login in Claude Code's own files instead, which Link doesn't carry yet.
What does it leave to Claude Code?
Its coding work: worktrees, diffs and a repository carried from one
machine to another are Claude Code's own. Its conversations and memory
stay in its folder, carried by lnk agent move but not over ASP.