fix(process): default capture networking to loopback

This commit is contained in:
morluto 2026-07-13 03:15:27 +00:00
parent b1912b18e1
commit bce3398dbe
2 changed files with 20 additions and 2 deletions

View File

@ -42,7 +42,7 @@ export const processScenarioSchema = z
environment: z.record(environmentName, z.string()).default({}),
inherit_environment: z.array(environmentName).max(64).default([]),
secret_aliases: z.array(environmentName).max(64).default([]),
network_access: z.literal("host").default("host"),
network_access: z.enum(["loopback", "host"]).default("loopback"),
filesystem_roots: z.array(z.string().startsWith("/")).max(16).default([]),
events: z
.array(

View File

@ -72,8 +72,12 @@ describe("process capture domain", () => {
});
it("requires explicit operator approval for host network access", () => {
const scenario = parseProcessScenario({
...base,
network_access: "host",
});
expect(
authorizeProcessScenario(parseProcessScenario(base), {
authorizeProcessScenario(scenario, {
enabled: true,
executableRoots: ["/bin"],
workingRoots: ["/tmp"],
@ -86,6 +90,20 @@ describe("process capture domain", () => {
});
});
it("allows loopback replay without external network approval", () => {
const scenario = parseProcessScenario(base);
expect(scenario.network_access).toBe("loopback");
expect(
authorizeProcessScenario(scenario, {
enabled: true,
executableRoots: ["/bin"],
workingRoots: ["/tmp"],
allowedEnvironment: [],
allowExternalNetwork: false,
}),
).toEqual({ allowed: true });
});
it("refuses paths and environment outside operator policy", () => {
const scenario = parseProcessScenario({
...base,