Connecting your repositories to an outside tool is a real decision, and the honest first reaction is a pause. You are about to hand over the thing your company is mostly made of. "Trust us" is not an answer to that pause, because trust is not a mechanism — it is what you are left with when there is no mechanism to point at.
So the useful questions are not about intentions. They are structural: what actually gets stored, what is allowed to leave the process, and what keeps one customer's code from ever reaching another. Those have answers you can check, and they are the answers worth asking any tool for — this one included.
The first question is what persists after the tool is done. WeaveSpec clones a repository the cheap way — a shallow, single-branch, blobless clone onto ephemeral disk — analyses it, and deletes the clone when the job ends. The source code itself is not kept. What persists is derived: text chunks and their embeddings, a summary, the relationships between services. The working copy of your code exists for the length of one analysis and then it is gone.
The second question is what the tool is even permitted to do while it is in there. WeaveSpec connects through a GitHub App that requests read access and nothing else — repository metadata and contents, read-only. It does not ask for write access, it cannot open a pull request, it cannot touch your Actions workflows, and it never requests your secrets. The permissions it deliberately does not hold are as much a part of the design as the ones it does. Access is scoped to the repositories you select, not your whole organisation, and disconnecting the App stops all further access immediately.
That distinction — reading is not writing — is not a footnote. A tool that only ever reads has a much smaller blast radius than one that can change your code, and the boundary is enforced by what GitHub will let the App do at all, not by a promise about how it behaves.
Repositories contain material that should never be sent anywhere: a private key, a database URL, a
committed .env. The design assumption is that this material will appear, and the job is to
catch it before anything crosses the process boundary.
WeaveSpec scans for it with a local rule engine that never calls a model — because asking a model to classify a secret would mean transmitting the secret to do it. The scan runs in the worker, on the ephemeral clone, before any content is embedded, shown, logged, or sent to a provider. And it fails closed: if a detector errors or cannot run, the file is excluded rather than waved through. When it flags something, the report carries a count, a path, and the name of the rule that fired — never the value, the line, or the matched text. A flagged file owns no searchable chunks at all, and that exclusion is checked by the database test suite, not just intended.
The last question is the one multi-tenant products most often get wrong: what stops one customer's data from surfacing in another's results. WeaveSpec draws that boundary at the project, and enforces it in the database rather than in application code. Every table has row-level security on; a read only succeeds if you are a member of the project the row belongs to.
The reason this is worth stating is that it is tested adversarially. The database test suite puts a user who belongs to one project up against another project's rows — naming the other project's id directly, the way a bypass attempt would — and confirms they see zero repositories, zero integrations, zero jobs, zero audit entries, and that a cross-tenant write changes nothing. The credentials your integrations use are locked down harder still: the columns that hold them carry no read grant to ordinary users at all, so no policy has to defend them — the database simply will not return them. A deleted project is deleted, not merely hidden; a search from another project returns nothing of it, in one transaction.
None of this asks you to trust a stranger with your code. It asks you to check the mechanism — and a tool worth connecting is one that has published the mechanism to check. That is the bar WeaveSpec is built to clear, and the bar you should hold every tool in this position to.
Your product ships from five repositories, but every tool you own understands one at a time. That gap is where planning breaks, and it is the gap WeaveSpec exists to close.
A cross-repo spec is not read the same way twice. The product manager, the tech lead, the developer and QA each need a different slice of it — from the same source of truth.
A coding agent is only as good as the spec you hand it. Across several repositories, the missing input is not more code — it is a clear, source-anchored description of the work.
A tool that reads your repositories and writes documents is easy to describe and easy to mistrust. The refusals are the part worth reading first.