## Summary Persist network approval allow/deny decisions as `network_rule(...)` entries in execpolicy (not proxy config) It adds `network_rule` parsing + append support in `codex-execpolicy`, including `decision="prompt"` (parse-only; not compiled into proxy allow/deny lists) - compile execpolicy network rules into proxy allow/deny lists and update the live proxy state on approval - preserve requirements execpolicy `network_rule(...)` entries when merging with file-based execpolicy - reject broad wildcard hosts (for example `*`) for persisted `network_rule(...)`
117 lines
No EOL
3.3 KiB
JSON
117 lines
No EOL
3.3 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"NetworkPolicyAmendment": {
|
|
"properties": {
|
|
"action": {
|
|
"$ref": "#/definitions/NetworkPolicyRuleAction"
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"action",
|
|
"host"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"NetworkPolicyRuleAction": {
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ReviewDecision": {
|
|
"description": "User's decision in response to an ExecApprovalRequest.",
|
|
"oneOf": [
|
|
{
|
|
"description": "User has approved this command and the agent should execute it.",
|
|
"enum": [
|
|
"approved"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "User has approved this command and wants to apply the proposed execpolicy amendment so future matching commands are permitted.",
|
|
"properties": {
|
|
"approved_execpolicy_amendment": {
|
|
"properties": {
|
|
"proposed_execpolicy_amendment": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"proposed_execpolicy_amendment"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"approved_execpolicy_amendment"
|
|
],
|
|
"title": "ApprovedExecpolicyAmendmentReviewDecision",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "User has approved this command and wants to automatically approve any future identical instances (`command` and `cwd` match exactly) for the remainder of the session.",
|
|
"enum": [
|
|
"approved_for_session"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": false,
|
|
"description": "User chose to persist a network policy rule (allow/deny) for future requests to the same host.",
|
|
"properties": {
|
|
"network_policy_amendment": {
|
|
"properties": {
|
|
"network_policy_amendment": {
|
|
"$ref": "#/definitions/NetworkPolicyAmendment"
|
|
}
|
|
},
|
|
"required": [
|
|
"network_policy_amendment"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"network_policy_amendment"
|
|
],
|
|
"title": "NetworkPolicyAmendmentReviewDecision",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "User has denied this command and the agent should not execute it, but it should continue the session and try something else.",
|
|
"enum": [
|
|
"denied"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "User has denied this command and the agent should not do anything until the user's next command.",
|
|
"enum": [
|
|
"abort"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"properties": {
|
|
"decision": {
|
|
"$ref": "#/definitions/ReviewDecision"
|
|
}
|
|
},
|
|
"required": [
|
|
"decision"
|
|
],
|
|
"title": "ExecCommandApprovalResponse",
|
|
"type": "object"
|
|
} |