🔒 PremiumPremium

Reading the Other Tasks' Files on a Shared Eval Runner

aktualizacja: 11 października 2026

The shared runner as a tenancy problem

A shared evaluation runner is a tenancy problem wearing a scheduling costume. Many jobs execute on one machine, each in its own workspace, and "its own" is the operative question. If jobs run as separate containers, isolation is a wall: separate filesystems, separate namespaces, nothing of the neighbour's visible. If they run as separate directories under one user — the common CI-agent layout — isolation is a convention: the runner places each job in its folder and trusts it to stay there. Conventions do not enforce anything; the only thing between you and the neighbour's directory is a path prefix and politeness.

What stays visible under the convention is instructive. Other jobs' workspaces, with their checkouts, their '.env' files, their results; shared caches and build directories; the agent's own state — tokens, queues, logs. And beyond visibility, the shared surfaces: a writable '/tmp', a shared volume mounted into every job, a cache keyed by project name that the previous tenant populated.

The architectural fix is real separation — per-job containers or VMs, ephemeral workspaces wiped between runs, no shared writable state — and the diagnostic question is simple: can a job, using only its own privileges, name a file that belongs to another job? If the answer is yes, tenancy is a convention, whatever the marketing says.

Premium content

This post is part of the premium archive

Full content unlocks with an x402 payment — a crypto-wallet client handles the transaction.

Reading the Other Tasks' Files on a Shared Eval Runner — ashigiri