You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: architecture/security-policy.md
+8-3Lines changed: 8 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,6 +91,9 @@ because it changes the effective access model for every sandbox on the gateway.
91
91
The policy advisor pipeline turns observed denials into draft policy
92
92
recommendations. There are two proposers (sandbox-side mechanistic mapper,
93
93
agent-authored via `policy.local`); the gateway is the single referee.
94
+
When enabled, L7 `policy_denied` responses include both structured
95
+
`next_steps` and a short `agent_guidance` string so generic agents can continue
96
+
through the proposal loop instead of treating the denial as terminal.
94
97
95
98
1.**Submit.** Both proposers POST through the same `SubmitPolicyAnalysis`
96
99
path. Each chunk is persisted with its `analysis_mode` for audit provenance.
@@ -130,15 +133,17 @@ than one reach + N method findings.
130
133
131
134
| Category | The prover detects… |
132
135
|---|---|
133
-
|`link_local_reach`| The proposal grants reach to a host in `169.254.0.0/16` or `fe80::/10`. Unconditional — cloud-metadata endpoints serve credentials regardless of sandbox state. |
136
+
|`link_local_reach`| The proposal grants reach to a host in `169.254.0.0/16`, `fe80::/10`, or a known metadata hostname such as `metadata.google.internal`. Unconditional — cloud-metadata endpoints serve credentials regardless of sandbox state. |
134
137
|`l7_bypass_credentialed`| The proposal lets a binary using a non-HTTP wire protocol (`git-remote-https`, `ssh`, `nc`) reach a host where a sandbox credential is in scope. The L7 proxy cannot inspect the wire protocol; the reviewer decides whether to trust the binary with the credential. |
135
138
|`credential_reach_expansion`| A binary gained credentialed reach to a (host, port) it could not reach before. New authenticated reach is a stated intent change; the reviewer confirms the binary should authenticate to the host at all. |
136
139
|`capability_expansion`| On a (binary, host, port) that already had credentialed reach, the policy adds a new HTTP method. The reviewer sees exactly which method was added (e.g., PUT) and decides if it's part of the agent's task. |
137
140
138
141
"Credential in scope" is sandbox-coarse, not binary-fine: a credential is
139
142
considered in scope if the sandbox has a provider attached whose
140
-
`target_hosts` include the proposed endpoint's host. v1 does not model
141
-
credential scopes (read-only vs write); presence is enough.
143
+
`target_hosts` include the proposed endpoint's host, including runtime-like
144
+
first-label wildcard coverage such as `*.github.com` covering
145
+
`api.github.com`. v1 does not model credential scopes (read-only vs write);
146
+
presence is enough.
142
147
143
148
Proposals intentionally omit `allowed_ips`. If a proposed rule targets a host
144
149
that resolves to a private IP, the proxy's runtime SSRF classification blocks
0 commit comments