Decisions
Why code asks language servers, and why each runs in a sandbox with no
network.
Why does code ask language servers rather than search text?
A language server knows what a name is: the definition a call reaches,
every use and no comment or string that only spells it, and the errors a
build would show without building. Searching text answers none of that
well in a large project. code asks the servers editors already use, so
a language is a setting ([tool.code.servers]), never code of Link's: a
server is any program speaking the Language Server Protocol on its input
and output.
Why does each language server run in a sandbox, with no network?
A language server runs the project's code: rust-analyzer its build
scripts and macros, gopls and clangd the builds they ask. So a
server is held as a run command is, made from the same sandbox file,
and starts only what [commands] allows, the server named there too:
one list says what the agent may run. It reaches no network, since
indexing needs none and a project's code shouldn't reach out while the
agent only asks about it; fetching dependencies is a run command's,
under [internet].
While its session lives
Unlike a command, a server lives while its session does, because indexing a project again for every question would cost more than the answer.