Build1 distinct publisher3 min readUpdated
field-cage blocks outbound connections from Linux runners in the kernel, keeps its logs on the box, and disclaims step correlation, tamper detection and organization-wide visibility.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Start with the allowlist, because it is not only what you typed into the YAML. Explicit IPv4, IPv6 and CIDR entries go in, then A and AAAA records for configured domains resolved at startup, then DNS responses observed while the job runs [5]. A socket filter watches those responses so addresses can be mapped back to domains, and only answers from resolvers listed in /etc/resolv.conf or from loopback are permitted to extend the kernel allowlist [6]. The set of destinations sitting in the LPM trie at any moment is therefore a superset of the set a reviewer read [17]. That is a workable way to handle CDN-backed hosts without wildcards, and the author rejects wildcards on purpose so every permitted destination stays legible in code review, with unknown YAML keys rejected rather than quietly skipped [7].
The second structural detail is when the agent starts. The composite Action downloads the selected release binary, verifies its SHA-256 checksum and launches the agent in the background [9], and it cannot see connections made before that setup step [10]. Those two facts protect different things. The checksum and the recommended pinning of `uses:` to a full commit SHA cover the agent's own supply chain [9]; the pre-setup window is simply uncovered, which is awkward for the compromised-action scenario that motivates egress control in the first place.
Enforcement fails loudly by design. In block mode the kernel returns EPERM for anything outside the trie [4], so a missing entry arrives as a broken build rather than a notification. Hence the documented sequence: run real build, test and release paths in audit mode, review what was observed, write the smallest practical allowlist, then switch to block and review later changes as code [11]. Audit mode records attempts without stopping them [3].
The commercial line is where the comparison bites. According to the author, Harden-Runner's Community tier is intended for public repositories and private-repository support belongs to its paid Enterprise offering [13], while field-cage has no account, license key, subscription or repository-visibility check, and offers the same audit, block and reporting behaviour under MIT for public and private repositories alike [12]. Both tools can observe outbound connections and block what policy does not permit; the difference is the infrastructure and context wrapped around that control [16]. The author names five capabilities his tool does not have [18][14], and lists more on the other side: historical network baselines and anomaly detection, maintained indicators for active supply-chain attacks, Windows and macOS audit coverage, enterprise support and governance [15]. field-cage is a Linux-runner agent [1] at v0.1.0 [2], and its logs stay on the runner unless the workflow uploads them, in text, JSON, CSV or job-summary form [8].
Nothing in that framing is oversold, which is unusual enough to note. The thing to test before adopting is whether your build's destination list stays short after a few months of dependency churn, because the maintenance of that list is now the whole security control.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
A socket filter observes DNS responses so IP addresses can be mapped back to domains, and only responses from resolvers configured in /etc/resolv.conf or from loopback may extend the kernel allowlist.
The composite Action downloads the selected release binary, verifies its SHA-256 checksum and starts the agent in the background; for production use the uses: reference should be pinned to a full commit SHA.
field-cage does not detect source-code tampering, correlate events with individual workflow steps, track process execution and file writes, recommend permissions, or provide organization-wide visibility; Harden-Runner does those things.
field-cage is an MIT-licensed eBPF agent, written by takihito, that monitors and restricts outbound connections from Linux GitHub Actions runners.
The documented Action usage references takihito/[email protected] with version v0.1.0.
field-cage has two modes: audit records connection attempts without blocking them, and block applies default-deny enforcement to IPv4 and IPv6 connections.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed first-party mechanics, zero independent corroboration
The technical description is unusually specific and self-limiting for a launch post - named eBPF attach points, LPM trie semantics, EPERM behaviour, resolver-restricted allowlist extension, and an explicit list of what the tool does not do - which raises evidence quality for claims about field-cage itself. But the cluster contains exactly one source, written by the project's author, with no code review, third-party test, benchmark or vendor documentation. Comparative claims about Harden-Runner's tiers and feature set have no corroboration at all.
v0.1.0 with signed artifacts, no disclosed users
The only adoption signal is that a v0.1.0 release exists with static Linux amd64/arm64 binaries, SHA-256 checksums, cosign signatures and SLSA Level 3 provenance - supply-chain hygiene that exceeds typical 0.1 releases. No installs, stars, workflow usage, organizational deployment or third-party report appears in the source, and the author closes by soliciting feedback.
Scope claimed is narrower than capability described
The post consistently understates rather than overstates: it names itself an egress filter rather than a security platform, enumerates five capabilities it lacks, admits it cannot see pre-setup connections, states it is not a hard isolation boundary against a root attacker, and documents fail-closed DNS races and the plaintext-UDP-IPv4-only limits of live DNS observation. The mild offset in the positive direction is the parity framing that both tools can observe and block, and the uncorroborated characterization of a commercial competitor's tiers, both of which flatter the project's substitution range.
Author promoting own project against a paid competitor
The sole source is the project's author publishing on a developer platform, with a direct interest in adoption and feedback, and the piece is structured as a comparison against a commercial vendor whose paid tier it undercuts on private-repository cost. Mitigating factors are visible: MIT licensing with no account, key or subscription means no disclosed revenue path, and the post repeatedly recommends the competitor where managed multi-repository security is required.
Single self-authored source, uncorroborated comparisons
Confidence is limited by structure rather than by vagueness: one publisher, one author, no independent verification, and a pre-1.0 project with no usage data. First-party design claims can be held with reasonable confidence; the Harden-Runner tier and feature claims and the functional-parity framing cannot be settled from this cluster.
build
Flux moves GitOps' source of truth into registries you own, and mirroring becomes the prerequisite1 distinct publisher
build
Rewritten tags beat your pin: what laravel-lang says about Composer trust1 distinct publisher
product
CodeQL 2.26.3 treats workflow files as code, and cache poisoning as a finding you must triage1 distinct publisher
build
A file-copy Allure adapter for Katalon, and the history IDs that make retries useful1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 22, 2026