agent-firewall-security 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_firewall_security-1.0.0/PKG-INFO +170 -0
- agent_firewall_security-1.0.0/README.md +154 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/PKG-INFO +170 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/SOURCES.txt +38 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/dependency_links.txt +1 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/entry_points.txt +2 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/requires.txt +7 -0
- agent_firewall_security-1.0.0/agent_firewall_security.egg-info/top_level.txt +1 -0
- agent_firewall_security-1.0.0/firewall/__init__.py +80 -0
- agent_firewall_security-1.0.0/firewall/adapters/__init__.py +30 -0
- agent_firewall_security-1.0.0/firewall/adapters/anthropic.py +324 -0
- agent_firewall_security-1.0.0/firewall/adapters/generic.py +237 -0
- agent_firewall_security-1.0.0/firewall/adapters/normalize.py +108 -0
- agent_firewall_security-1.0.0/firewall/adapters/openai.py +363 -0
- agent_firewall_security-1.0.0/firewall/attenuation.py +194 -0
- agent_firewall_security-1.0.0/firewall/authorization.py +236 -0
- agent_firewall_security-1.0.0/firewall/capability.py +287 -0
- agent_firewall_security-1.0.0/firewall/cli.py +359 -0
- agent_firewall_security-1.0.0/firewall/delegation.py +252 -0
- agent_firewall_security-1.0.0/firewall/engine.py +2017 -0
- agent_firewall_security-1.0.0/firewall/evidence.py +259 -0
- agent_firewall_security-1.0.0/firewall/explain.py +165 -0
- agent_firewall_security-1.0.0/firewall/http.py +478 -0
- agent_firewall_security-1.0.0/firewall/identity.py +508 -0
- agent_firewall_security-1.0.0/firewall/key_management.py +577 -0
- agent_firewall_security-1.0.0/firewall/key_store.py +755 -0
- agent_firewall_security-1.0.0/firewall/lifecycle.py +244 -0
- agent_firewall_security-1.0.0/firewall/lifecycle_store.py +599 -0
- agent_firewall_security-1.0.0/firewall/mcp.py +245 -0
- agent_firewall_security-1.0.0/firewall/namespace.py +190 -0
- agent_firewall_security-1.0.0/firewall/protect.py +72 -0
- agent_firewall_security-1.0.0/firewall/replay.py +160 -0
- agent_firewall_security-1.0.0/firewall/revocation.py +378 -0
- agent_firewall_security-1.0.0/firewall/revocation_store.py +288 -0
- agent_firewall_security-1.0.0/firewall/sdk.py +1206 -0
- agent_firewall_security-1.0.0/firewall/tools.py +177 -0
- agent_firewall_security-1.0.0/firewall/transport.py +222 -0
- agent_firewall_security-1.0.0/pyproject.toml +33 -0
- agent_firewall_security-1.0.0/setup.cfg +4 -0
- agent_firewall_security-1.0.0/tests/test_engine.py +257 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-firewall-security
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Security and authorization layer for AI agents and automated tool use.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Shubhbhangoo/agent-firewall
|
|
6
|
+
Project-URL: Repository, https://github.com/Shubhbhangoo/agent-firewall
|
|
7
|
+
Project-URL: Issues, https://github.com/Shubhbhangoo/agent-firewall/issues
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
Requires-Dist: PyYAML>=6.0
|
|
11
|
+
Requires-Dist: mcp>=2.0
|
|
12
|
+
Requires-Dist: cryptography>=41.0
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: pytest>=9.0; extra == "dev"
|
|
15
|
+
Requires-Dist: hypothesis>=6.0; extra == "dev"
|
|
16
|
+
|
|
17
|
+
Agent Firewall
|
|
18
|
+
|
|
19
|
+
Security and authorization infrastructure for AI agents and automated tool use.
|
|
20
|
+
|
|
21
|
+
Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
|
|
22
|
+
|
|
23
|
+
## v1.0
|
|
24
|
+
|
|
25
|
+
Agent Firewall v1.0 is the first stable release.
|
|
26
|
+
|
|
27
|
+
### Core security
|
|
28
|
+
|
|
29
|
+
- Capability-based authorization
|
|
30
|
+
- Cryptographic capability verification
|
|
31
|
+
- Capability attenuation
|
|
32
|
+
- Capability delegation
|
|
33
|
+
- Capability revocation
|
|
34
|
+
- Replay protection
|
|
35
|
+
- Lifecycle recording
|
|
36
|
+
- Expiration enforcement
|
|
37
|
+
- Issuer trust management
|
|
38
|
+
- Signing-key rotation
|
|
39
|
+
- Key retirement
|
|
40
|
+
- Fail-closed authorization semantics
|
|
41
|
+
|
|
42
|
+
### Persistent security state
|
|
43
|
+
|
|
44
|
+
v1.0 supports persistent managed signing keys and issuer trust state.
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import os
|
|
48
|
+
|
|
49
|
+
from firewall.sdk import FirewallSDK
|
|
50
|
+
|
|
51
|
+
master_key = os.urandom(32)
|
|
52
|
+
|
|
53
|
+
sdk = FirewallSDK(
|
|
54
|
+
key_store_path="firewall-keys.db",
|
|
55
|
+
master_key=master_key,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
sdk.generate_key("key-1")
|
|
59
|
+
|
|
60
|
+
capability = sdk.issue(
|
|
61
|
+
agent="agent-a",
|
|
62
|
+
capability="payments.send",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
Private signing keys are encrypted at rest.
|
|
66
|
+
|
|
67
|
+
The master key is supplied by the application and is never stored by Agent Firewall.
|
|
68
|
+
|
|
69
|
+
Key rotation
|
|
70
|
+
sdk.rotate_key("key-2")
|
|
71
|
+
|
|
72
|
+
Rotation creates a new active signing key and retires the previous one.
|
|
73
|
+
|
|
74
|
+
Previously issued capabilities are not automatically revoked.
|
|
75
|
+
|
|
76
|
+
Issuer trust
|
|
77
|
+
sdk.trust_issuer("issuer-a")
|
|
78
|
+
sdk.revoke_issuer("issuer-a")
|
|
79
|
+
|
|
80
|
+
Issuer trust state can survive SDK restart when persistent key storage is enabled.
|
|
81
|
+
|
|
82
|
+
Legacy issuance
|
|
83
|
+
|
|
84
|
+
The existing direct-key API remains supported:
|
|
85
|
+
|
|
86
|
+
sdk.issue(
|
|
87
|
+
private_key=private_key,
|
|
88
|
+
agent="agent-a",
|
|
89
|
+
capability="payments.send",
|
|
90
|
+
)
|
|
91
|
+
CLI
|
|
92
|
+
firewall init
|
|
93
|
+
firewall validate
|
|
94
|
+
firewall inspect-token
|
|
95
|
+
firewall explain
|
|
96
|
+
Security testing
|
|
97
|
+
|
|
98
|
+
The project includes:
|
|
99
|
+
|
|
100
|
+
unit tests
|
|
101
|
+
integration tests
|
|
102
|
+
property-based tests
|
|
103
|
+
state-machine tests
|
|
104
|
+
persistence failure tests
|
|
105
|
+
adapter interoperability tests
|
|
106
|
+
benchmark coverage
|
|
107
|
+
|
|
108
|
+
The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
|
|
109
|
+
|
|
110
|
+
Installation
|
|
111
|
+
pip install agent-firewall
|
|
112
|
+
Documentation
|
|
113
|
+
|
|
114
|
+
See:
|
|
115
|
+
|
|
116
|
+
docs/v1.0-api-contract.md
|
|
117
|
+
docs/v1.0-security.md
|
|
118
|
+
docs/v1.0-key-management.md
|
|
119
|
+
|
|
120
|
+
### `CHANGELOG.md`
|
|
121
|
+
|
|
122
|
+
Create or update:
|
|
123
|
+
|
|
124
|
+
```md
|
|
125
|
+
# Changelog
|
|
126
|
+
|
|
127
|
+
All notable changes to Agent Firewall are documented here.
|
|
128
|
+
|
|
129
|
+
## [1.0.0] - 2026-08-23
|
|
130
|
+
|
|
131
|
+
### Added
|
|
132
|
+
|
|
133
|
+
- Stable v1.0 public API contract
|
|
134
|
+
- Managed capability signing keys
|
|
135
|
+
- Signing-key rotation
|
|
136
|
+
- Signing-key retirement
|
|
137
|
+
- Persistent encrypted signing-key storage
|
|
138
|
+
- Persistent issuer trust state
|
|
139
|
+
- Issuer trust and revocation management
|
|
140
|
+
- Persistent lifecycle and revocation support
|
|
141
|
+
- Generic tool adapter
|
|
142
|
+
- OpenAI tool adapter
|
|
143
|
+
- Anthropic tool adapter
|
|
144
|
+
- Capability normalization
|
|
145
|
+
- Capability explanation and denial reporting
|
|
146
|
+
- CLI commands:
|
|
147
|
+
- `firewall init`
|
|
148
|
+
- `firewall validate`
|
|
149
|
+
- `firewall inspect-token`
|
|
150
|
+
- `firewall explain`
|
|
151
|
+
- Property-based security tests
|
|
152
|
+
- Lifecycle state-machine security tests
|
|
153
|
+
- Persistence failure and corruption tests
|
|
154
|
+
- CI security regression matrix
|
|
155
|
+
- Python 3.10, 3.11, and 3.12 CI coverage
|
|
156
|
+
- v1.0 security and key-management documentation
|
|
157
|
+
|
|
158
|
+
### Security
|
|
159
|
+
|
|
160
|
+
- Authorization fails closed when critical security state cannot be verified.
|
|
161
|
+
- Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
|
|
162
|
+
- Retiring or rotating a key does not implicitly grant or revoke capability authority.
|
|
163
|
+
- Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
|
|
164
|
+
- Private signing-key material is encrypted at rest in persistent storage.
|
|
165
|
+
|
|
166
|
+
### Compatibility
|
|
167
|
+
|
|
168
|
+
- Existing direct `private_key=` capability issuance remains supported.
|
|
169
|
+
- v0.9 CLI commands remain available.
|
|
170
|
+
- Existing adapter security semantics continue to use the same authorization core.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
Agent Firewall
|
|
2
|
+
|
|
3
|
+
Security and authorization infrastructure for AI agents and automated tool use.
|
|
4
|
+
|
|
5
|
+
Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
|
|
6
|
+
|
|
7
|
+
## v1.0
|
|
8
|
+
|
|
9
|
+
Agent Firewall v1.0 is the first stable release.
|
|
10
|
+
|
|
11
|
+
### Core security
|
|
12
|
+
|
|
13
|
+
- Capability-based authorization
|
|
14
|
+
- Cryptographic capability verification
|
|
15
|
+
- Capability attenuation
|
|
16
|
+
- Capability delegation
|
|
17
|
+
- Capability revocation
|
|
18
|
+
- Replay protection
|
|
19
|
+
- Lifecycle recording
|
|
20
|
+
- Expiration enforcement
|
|
21
|
+
- Issuer trust management
|
|
22
|
+
- Signing-key rotation
|
|
23
|
+
- Key retirement
|
|
24
|
+
- Fail-closed authorization semantics
|
|
25
|
+
|
|
26
|
+
### Persistent security state
|
|
27
|
+
|
|
28
|
+
v1.0 supports persistent managed signing keys and issuer trust state.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
import os
|
|
32
|
+
|
|
33
|
+
from firewall.sdk import FirewallSDK
|
|
34
|
+
|
|
35
|
+
master_key = os.urandom(32)
|
|
36
|
+
|
|
37
|
+
sdk = FirewallSDK(
|
|
38
|
+
key_store_path="firewall-keys.db",
|
|
39
|
+
master_key=master_key,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
sdk.generate_key("key-1")
|
|
43
|
+
|
|
44
|
+
capability = sdk.issue(
|
|
45
|
+
agent="agent-a",
|
|
46
|
+
capability="payments.send",
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
Private signing keys are encrypted at rest.
|
|
50
|
+
|
|
51
|
+
The master key is supplied by the application and is never stored by Agent Firewall.
|
|
52
|
+
|
|
53
|
+
Key rotation
|
|
54
|
+
sdk.rotate_key("key-2")
|
|
55
|
+
|
|
56
|
+
Rotation creates a new active signing key and retires the previous one.
|
|
57
|
+
|
|
58
|
+
Previously issued capabilities are not automatically revoked.
|
|
59
|
+
|
|
60
|
+
Issuer trust
|
|
61
|
+
sdk.trust_issuer("issuer-a")
|
|
62
|
+
sdk.revoke_issuer("issuer-a")
|
|
63
|
+
|
|
64
|
+
Issuer trust state can survive SDK restart when persistent key storage is enabled.
|
|
65
|
+
|
|
66
|
+
Legacy issuance
|
|
67
|
+
|
|
68
|
+
The existing direct-key API remains supported:
|
|
69
|
+
|
|
70
|
+
sdk.issue(
|
|
71
|
+
private_key=private_key,
|
|
72
|
+
agent="agent-a",
|
|
73
|
+
capability="payments.send",
|
|
74
|
+
)
|
|
75
|
+
CLI
|
|
76
|
+
firewall init
|
|
77
|
+
firewall validate
|
|
78
|
+
firewall inspect-token
|
|
79
|
+
firewall explain
|
|
80
|
+
Security testing
|
|
81
|
+
|
|
82
|
+
The project includes:
|
|
83
|
+
|
|
84
|
+
unit tests
|
|
85
|
+
integration tests
|
|
86
|
+
property-based tests
|
|
87
|
+
state-machine tests
|
|
88
|
+
persistence failure tests
|
|
89
|
+
adapter interoperability tests
|
|
90
|
+
benchmark coverage
|
|
91
|
+
|
|
92
|
+
The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
|
|
93
|
+
|
|
94
|
+
Installation
|
|
95
|
+
pip install agent-firewall
|
|
96
|
+
Documentation
|
|
97
|
+
|
|
98
|
+
See:
|
|
99
|
+
|
|
100
|
+
docs/v1.0-api-contract.md
|
|
101
|
+
docs/v1.0-security.md
|
|
102
|
+
docs/v1.0-key-management.md
|
|
103
|
+
|
|
104
|
+
### `CHANGELOG.md`
|
|
105
|
+
|
|
106
|
+
Create or update:
|
|
107
|
+
|
|
108
|
+
```md
|
|
109
|
+
# Changelog
|
|
110
|
+
|
|
111
|
+
All notable changes to Agent Firewall are documented here.
|
|
112
|
+
|
|
113
|
+
## [1.0.0] - 2026-08-23
|
|
114
|
+
|
|
115
|
+
### Added
|
|
116
|
+
|
|
117
|
+
- Stable v1.0 public API contract
|
|
118
|
+
- Managed capability signing keys
|
|
119
|
+
- Signing-key rotation
|
|
120
|
+
- Signing-key retirement
|
|
121
|
+
- Persistent encrypted signing-key storage
|
|
122
|
+
- Persistent issuer trust state
|
|
123
|
+
- Issuer trust and revocation management
|
|
124
|
+
- Persistent lifecycle and revocation support
|
|
125
|
+
- Generic tool adapter
|
|
126
|
+
- OpenAI tool adapter
|
|
127
|
+
- Anthropic tool adapter
|
|
128
|
+
- Capability normalization
|
|
129
|
+
- Capability explanation and denial reporting
|
|
130
|
+
- CLI commands:
|
|
131
|
+
- `firewall init`
|
|
132
|
+
- `firewall validate`
|
|
133
|
+
- `firewall inspect-token`
|
|
134
|
+
- `firewall explain`
|
|
135
|
+
- Property-based security tests
|
|
136
|
+
- Lifecycle state-machine security tests
|
|
137
|
+
- Persistence failure and corruption tests
|
|
138
|
+
- CI security regression matrix
|
|
139
|
+
- Python 3.10, 3.11, and 3.12 CI coverage
|
|
140
|
+
- v1.0 security and key-management documentation
|
|
141
|
+
|
|
142
|
+
### Security
|
|
143
|
+
|
|
144
|
+
- Authorization fails closed when critical security state cannot be verified.
|
|
145
|
+
- Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
|
|
146
|
+
- Retiring or rotating a key does not implicitly grant or revoke capability authority.
|
|
147
|
+
- Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
|
|
148
|
+
- Private signing-key material is encrypted at rest in persistent storage.
|
|
149
|
+
|
|
150
|
+
### Compatibility
|
|
151
|
+
|
|
152
|
+
- Existing direct `private_key=` capability issuance remains supported.
|
|
153
|
+
- v0.9 CLI commands remain available.
|
|
154
|
+
- Existing adapter security semantics continue to use the same authorization core.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-firewall-security
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Security and authorization layer for AI agents and automated tool use.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Shubhbhangoo/agent-firewall
|
|
6
|
+
Project-URL: Repository, https://github.com/Shubhbhangoo/agent-firewall
|
|
7
|
+
Project-URL: Issues, https://github.com/Shubhbhangoo/agent-firewall/issues
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
Requires-Dist: PyYAML>=6.0
|
|
11
|
+
Requires-Dist: mcp>=2.0
|
|
12
|
+
Requires-Dist: cryptography>=41.0
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: pytest>=9.0; extra == "dev"
|
|
15
|
+
Requires-Dist: hypothesis>=6.0; extra == "dev"
|
|
16
|
+
|
|
17
|
+
Agent Firewall
|
|
18
|
+
|
|
19
|
+
Security and authorization infrastructure for AI agents and automated tool use.
|
|
20
|
+
|
|
21
|
+
Agent Firewall provides a capability-based security layer between agents and the actions they are allowed to perform.
|
|
22
|
+
|
|
23
|
+
## v1.0
|
|
24
|
+
|
|
25
|
+
Agent Firewall v1.0 is the first stable release.
|
|
26
|
+
|
|
27
|
+
### Core security
|
|
28
|
+
|
|
29
|
+
- Capability-based authorization
|
|
30
|
+
- Cryptographic capability verification
|
|
31
|
+
- Capability attenuation
|
|
32
|
+
- Capability delegation
|
|
33
|
+
- Capability revocation
|
|
34
|
+
- Replay protection
|
|
35
|
+
- Lifecycle recording
|
|
36
|
+
- Expiration enforcement
|
|
37
|
+
- Issuer trust management
|
|
38
|
+
- Signing-key rotation
|
|
39
|
+
- Key retirement
|
|
40
|
+
- Fail-closed authorization semantics
|
|
41
|
+
|
|
42
|
+
### Persistent security state
|
|
43
|
+
|
|
44
|
+
v1.0 supports persistent managed signing keys and issuer trust state.
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import os
|
|
48
|
+
|
|
49
|
+
from firewall.sdk import FirewallSDK
|
|
50
|
+
|
|
51
|
+
master_key = os.urandom(32)
|
|
52
|
+
|
|
53
|
+
sdk = FirewallSDK(
|
|
54
|
+
key_store_path="firewall-keys.db",
|
|
55
|
+
master_key=master_key,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
sdk.generate_key("key-1")
|
|
59
|
+
|
|
60
|
+
capability = sdk.issue(
|
|
61
|
+
agent="agent-a",
|
|
62
|
+
capability="payments.send",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
Private signing keys are encrypted at rest.
|
|
66
|
+
|
|
67
|
+
The master key is supplied by the application and is never stored by Agent Firewall.
|
|
68
|
+
|
|
69
|
+
Key rotation
|
|
70
|
+
sdk.rotate_key("key-2")
|
|
71
|
+
|
|
72
|
+
Rotation creates a new active signing key and retires the previous one.
|
|
73
|
+
|
|
74
|
+
Previously issued capabilities are not automatically revoked.
|
|
75
|
+
|
|
76
|
+
Issuer trust
|
|
77
|
+
sdk.trust_issuer("issuer-a")
|
|
78
|
+
sdk.revoke_issuer("issuer-a")
|
|
79
|
+
|
|
80
|
+
Issuer trust state can survive SDK restart when persistent key storage is enabled.
|
|
81
|
+
|
|
82
|
+
Legacy issuance
|
|
83
|
+
|
|
84
|
+
The existing direct-key API remains supported:
|
|
85
|
+
|
|
86
|
+
sdk.issue(
|
|
87
|
+
private_key=private_key,
|
|
88
|
+
agent="agent-a",
|
|
89
|
+
capability="payments.send",
|
|
90
|
+
)
|
|
91
|
+
CLI
|
|
92
|
+
firewall init
|
|
93
|
+
firewall validate
|
|
94
|
+
firewall inspect-token
|
|
95
|
+
firewall explain
|
|
96
|
+
Security testing
|
|
97
|
+
|
|
98
|
+
The project includes:
|
|
99
|
+
|
|
100
|
+
unit tests
|
|
101
|
+
integration tests
|
|
102
|
+
property-based tests
|
|
103
|
+
state-machine tests
|
|
104
|
+
persistence failure tests
|
|
105
|
+
adapter interoperability tests
|
|
106
|
+
benchmark coverage
|
|
107
|
+
|
|
108
|
+
The CI security matrix runs the complete test suite on Python 3.10, 3.11, and 3.12.
|
|
109
|
+
|
|
110
|
+
Installation
|
|
111
|
+
pip install agent-firewall
|
|
112
|
+
Documentation
|
|
113
|
+
|
|
114
|
+
See:
|
|
115
|
+
|
|
116
|
+
docs/v1.0-api-contract.md
|
|
117
|
+
docs/v1.0-security.md
|
|
118
|
+
docs/v1.0-key-management.md
|
|
119
|
+
|
|
120
|
+
### `CHANGELOG.md`
|
|
121
|
+
|
|
122
|
+
Create or update:
|
|
123
|
+
|
|
124
|
+
```md
|
|
125
|
+
# Changelog
|
|
126
|
+
|
|
127
|
+
All notable changes to Agent Firewall are documented here.
|
|
128
|
+
|
|
129
|
+
## [1.0.0] - 2026-08-23
|
|
130
|
+
|
|
131
|
+
### Added
|
|
132
|
+
|
|
133
|
+
- Stable v1.0 public API contract
|
|
134
|
+
- Managed capability signing keys
|
|
135
|
+
- Signing-key rotation
|
|
136
|
+
- Signing-key retirement
|
|
137
|
+
- Persistent encrypted signing-key storage
|
|
138
|
+
- Persistent issuer trust state
|
|
139
|
+
- Issuer trust and revocation management
|
|
140
|
+
- Persistent lifecycle and revocation support
|
|
141
|
+
- Generic tool adapter
|
|
142
|
+
- OpenAI tool adapter
|
|
143
|
+
- Anthropic tool adapter
|
|
144
|
+
- Capability normalization
|
|
145
|
+
- Capability explanation and denial reporting
|
|
146
|
+
- CLI commands:
|
|
147
|
+
- `firewall init`
|
|
148
|
+
- `firewall validate`
|
|
149
|
+
- `firewall inspect-token`
|
|
150
|
+
- `firewall explain`
|
|
151
|
+
- Property-based security tests
|
|
152
|
+
- Lifecycle state-machine security tests
|
|
153
|
+
- Persistence failure and corruption tests
|
|
154
|
+
- CI security regression matrix
|
|
155
|
+
- Python 3.10, 3.11, and 3.12 CI coverage
|
|
156
|
+
- v1.0 security and key-management documentation
|
|
157
|
+
|
|
158
|
+
### Security
|
|
159
|
+
|
|
160
|
+
- Authorization fails closed when critical security state cannot be verified.
|
|
161
|
+
- Persistent key-store failures do not silently fall back to cached or newly generated signing authority.
|
|
162
|
+
- Retiring or rotating a key does not implicitly grant or revoke capability authority.
|
|
163
|
+
- Revoked, expired, replayed, and denied capabilities cannot transition into successful use.
|
|
164
|
+
- Private signing-key material is encrypted at rest in persistent storage.
|
|
165
|
+
|
|
166
|
+
### Compatibility
|
|
167
|
+
|
|
168
|
+
- Existing direct `private_key=` capability issuance remains supported.
|
|
169
|
+
- v0.9 CLI commands remain available.
|
|
170
|
+
- Existing adapter security semantics continue to use the same authorization core.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
agent_firewall_security.egg-info/PKG-INFO
|
|
4
|
+
agent_firewall_security.egg-info/SOURCES.txt
|
|
5
|
+
agent_firewall_security.egg-info/dependency_links.txt
|
|
6
|
+
agent_firewall_security.egg-info/entry_points.txt
|
|
7
|
+
agent_firewall_security.egg-info/requires.txt
|
|
8
|
+
agent_firewall_security.egg-info/top_level.txt
|
|
9
|
+
firewall/__init__.py
|
|
10
|
+
firewall/attenuation.py
|
|
11
|
+
firewall/authorization.py
|
|
12
|
+
firewall/capability.py
|
|
13
|
+
firewall/cli.py
|
|
14
|
+
firewall/delegation.py
|
|
15
|
+
firewall/engine.py
|
|
16
|
+
firewall/evidence.py
|
|
17
|
+
firewall/explain.py
|
|
18
|
+
firewall/http.py
|
|
19
|
+
firewall/identity.py
|
|
20
|
+
firewall/key_management.py
|
|
21
|
+
firewall/key_store.py
|
|
22
|
+
firewall/lifecycle.py
|
|
23
|
+
firewall/lifecycle_store.py
|
|
24
|
+
firewall/mcp.py
|
|
25
|
+
firewall/namespace.py
|
|
26
|
+
firewall/protect.py
|
|
27
|
+
firewall/replay.py
|
|
28
|
+
firewall/revocation.py
|
|
29
|
+
firewall/revocation_store.py
|
|
30
|
+
firewall/sdk.py
|
|
31
|
+
firewall/tools.py
|
|
32
|
+
firewall/transport.py
|
|
33
|
+
firewall/adapters/__init__.py
|
|
34
|
+
firewall/adapters/anthropic.py
|
|
35
|
+
firewall/adapters/generic.py
|
|
36
|
+
firewall/adapters/normalize.py
|
|
37
|
+
firewall/adapters/openai.py
|
|
38
|
+
tests/test_engine.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
firewall
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from .engine import (
|
|
2
|
+
Firewall,
|
|
3
|
+
Decision,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
from .sdk import (
|
|
7
|
+
FirewallSDK,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from .capability import (
|
|
11
|
+
Capability,
|
|
12
|
+
CapabilityVerifier,
|
|
13
|
+
capability_fingerprint,
|
|
14
|
+
generate_capability_key_pair,
|
|
15
|
+
sign_capability,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
from .delegation import (
|
|
19
|
+
Delegation,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
from .revocation import (
|
|
23
|
+
RevocationRegistry,
|
|
24
|
+
RevocationRecord,
|
|
25
|
+
RevocationError,
|
|
26
|
+
AlreadyRevokedError,
|
|
27
|
+
InvalidFingerprintError,
|
|
28
|
+
RevokedCapabilityError,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
from .lifecycle import (
|
|
32
|
+
LifecycleEvent,
|
|
33
|
+
LifecycleEventType,
|
|
34
|
+
LifecycleRecorder,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
from .lifecycle_store import (
|
|
38
|
+
LifecycleStore,
|
|
39
|
+
LifecycleStoreError,
|
|
40
|
+
LifecycleStoreClosedError,
|
|
41
|
+
SQLiteLifecycleStore,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
__all__ = [
|
|
45
|
+
# Engine
|
|
46
|
+
"Firewall",
|
|
47
|
+
"Decision",
|
|
48
|
+
|
|
49
|
+
# SDK
|
|
50
|
+
"FirewallSDK",
|
|
51
|
+
|
|
52
|
+
# Capabilities
|
|
53
|
+
"Capability",
|
|
54
|
+
"CapabilityVerifier",
|
|
55
|
+
"capability_fingerprint",
|
|
56
|
+
"generate_capability_key_pair",
|
|
57
|
+
"sign_capability",
|
|
58
|
+
|
|
59
|
+
# Delegation
|
|
60
|
+
"Delegation",
|
|
61
|
+
|
|
62
|
+
# Revocation
|
|
63
|
+
"RevocationRegistry",
|
|
64
|
+
"RevocationRecord",
|
|
65
|
+
"RevocationError",
|
|
66
|
+
"AlreadyRevokedError",
|
|
67
|
+
"InvalidFingerprintError",
|
|
68
|
+
"RevokedCapabilityError",
|
|
69
|
+
|
|
70
|
+
# Lifecycle
|
|
71
|
+
"LifecycleEvent",
|
|
72
|
+
"LifecycleEventType",
|
|
73
|
+
"LifecycleRecorder",
|
|
74
|
+
|
|
75
|
+
# Lifecycle persistence
|
|
76
|
+
"LifecycleStore",
|
|
77
|
+
"LifecycleStoreError",
|
|
78
|
+
"LifecycleStoreClosedError",
|
|
79
|
+
"SQLiteLifecycleStore",
|
|
80
|
+
]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from .generic import (
|
|
2
|
+
GenericToolAdapter,
|
|
3
|
+
GenericToolCall,
|
|
4
|
+
generic_tool,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
from .openai import (
|
|
8
|
+
OpenAITool,
|
|
9
|
+
openai_tool,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from .anthropic import (
|
|
13
|
+
AnthropicTool,
|
|
14
|
+
anthropic_tool,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
from .normalize import (
|
|
18
|
+
normalize_tool_call,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"GenericToolAdapter",
|
|
23
|
+
"GenericToolCall",
|
|
24
|
+
"generic_tool",
|
|
25
|
+
"OpenAITool",
|
|
26
|
+
"openai_tool",
|
|
27
|
+
"AnthropicTool",
|
|
28
|
+
"anthropic_tool",
|
|
29
|
+
"normalize_tool_call",
|
|
30
|
+
]
|