damage-control-dev 0.1.0__tar.gz → 0.1.1__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.
- damage_control_dev-0.1.1/PKG-INFO +92 -0
- damage_control_dev-0.1.1/README.md +68 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/pyproject.toml +11 -1
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/__init__.py +1 -1
- damage_control_dev-0.1.0/PKG-INFO +0 -15
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/.gitignore +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/LICENSE +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/NOTICE +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/__main__.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/adapter.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/audit.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/breakglass.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/claude_code.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/cli.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/engine.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/groups.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/harness_config.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/hook.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/install.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/packs.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/policy.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/profile.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/aws.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/aws.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/cloud-hosting.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/cloud-hosting.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/containers.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/containers.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/control-plane.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/control-plane.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/core.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/core.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/databases.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/databases.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/firebase.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/firebase.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/gcp.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/gcp.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/git.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/git.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/infrastructure.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/infrastructure.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/mcp-tools.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/mcp-tools.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/outbound.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/outbound.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/payloads.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/payloads.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/publish.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/publish.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/registry.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/registry.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/remote.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/remote.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/tmux.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/tmux.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/ruleset.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/aws.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/aws.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/docker.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/docker.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/gcp.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/gcp.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/gh.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/gh.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/git.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/git.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/kubectl.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/kubectl.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/npm.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/npm.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/terraform.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/terraform.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/uv.json +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/uv.yaml +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/tools/build_rules_json.py +0 -0
- {damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/tools/coverage_matrix.py +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: damage-control-dev
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Damage control for AI coding agents: a PreToolUse guard that blocks or asks before destructive commands and protected-path writes (Claude Code).
|
|
5
|
+
Project-URL: Homepage, https://github.com/dotdevdotdev/damage-control-dev
|
|
6
|
+
Project-URL: Source, https://github.com/dotdevdotdev/damage-control-dev
|
|
7
|
+
Project-URL: Issues, https://github.com/dotdevdotdev/damage-control-dev/issues
|
|
8
|
+
Project-URL: Security, https://github.com/dotdevdotdev/damage-control-dev/security/policy
|
|
9
|
+
Author-email: dotdev <dev@dotdev.dev>
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
License-File: NOTICE
|
|
13
|
+
Keywords: agent,ai,claude-code,guardrails,hooks,safety
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: MacOS
|
|
18
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# damage-control-dev
|
|
26
|
+
|
|
27
|
+
A guardrail layer for AI coding agents. It runs as a Claude Code `PreToolUse` hook and **blocks or asks before destructive commands, secret access, protected-path writes and risky MCP calls**, before the tool runs.
|
|
28
|
+
|
|
29
|
+
It is a seatbelt, not a sandbox. See [What it is not](#what-it-is-not).
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
uv tool install damage-control-dev # or: pipx install damage-control-dev
|
|
33
|
+
damage-control-dev init # register the hooks, self-test them, record the install
|
|
34
|
+
damage-control-dev status # read-only drift report
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Supports **Claude Code on macOS and Linux**, Python 3.9 or newer. Nothing else is supported or planned.
|
|
38
|
+
|
|
39
|
+
## What it does
|
|
40
|
+
|
|
41
|
+
- Guards Bash, Edit, Write, Read and MCP tool calls through one policy ladder (allow, ask, block).
|
|
42
|
+
- Re-scans wrapped commands as commands in their own right: `ssh host "..."`, `sh -c`, database clients (`psql -c`, `mysql -e`), `git -c` keys that run programs.
|
|
43
|
+
- Protects its own control plane: the hook scripts, the settings that register them, and its policy file cannot be edited by the agent it guards.
|
|
44
|
+
- Fails closed: any crash or import failure in the hook exits 2 (block), and `init` registers the hook with `onFailure: block` (Claude Code 2.1.295 or newer) so a missing interpreter blocks the call instead of silently allowing it.
|
|
45
|
+
- Unattended mode: when no human can answer a prompt, an `ask` becomes a block unless a rule carries an explicit grant.
|
|
46
|
+
- Rules ship as groups that are on by default (core, git, registry, payloads, remote, MCP tools, control plane) and opt-in vendor packs: `aws`, `gcp`, `firebase`, `cloud-hosting`, `databases`, `containers`, `infrastructure`, `publish`, `tmux`. Every rule has a frozen, stable id.
|
|
47
|
+
- Offline: after `init` nothing touches the network.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
damage-control-dev check "git push --force origin main" # what would the hooks decide?
|
|
51
|
+
damage-control-dev rules # list enforced rule ids
|
|
52
|
+
damage-control-dev packs # list packs; enabling is human-terminal only
|
|
53
|
+
damage-control-dev doctor --fix # self-test and repair
|
|
54
|
+
damage-control-dev uninstall # remove exactly our entries
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## What it is not
|
|
58
|
+
|
|
59
|
+
- Not a sandbox, and not a boundary against a determined adversary. A process running as the same OS user can edit anything this tool can.
|
|
60
|
+
- Only as strong as the harness's hook surface: commands you type yourself with `!`, tools that have no hook event, and a hook that times out are outside its reach.
|
|
61
|
+
- No network egress filtering, containment or resource limits.
|
|
62
|
+
- Expect false positives and false negatives. The policy is: ask, then learn.
|
|
63
|
+
|
|
64
|
+
See [docs/threat-model.md](docs/threat-model.md).
|
|
65
|
+
|
|
66
|
+
## Where things live
|
|
67
|
+
|
|
68
|
+
Everything the installer keeps is under `~/.damage-control/` (or `$DAMAGE_CONTROL_HOME`):
|
|
69
|
+
|
|
70
|
+
- `damagecontrol.yml`: the protected policy (kill switch, `packs:`, `disabled_groups:`)
|
|
71
|
+
- `damage-control/`, `tooldefs/`: your own rule overlays
|
|
72
|
+
- `state/install.json`: what `init` recorded (interpreter, ruleset digest, per-scope write hash); `state/backups/` holds first-write backups of your settings file
|
|
73
|
+
- `bin/damage-control-breakglass`: a stdlib-only script that unregisters the hooks if the Python environment is ever broken
|
|
74
|
+
|
|
75
|
+
A policy with no `packs:` key loads the default groups and no vendor packs; an unreadable policy loads everything.
|
|
76
|
+
|
|
77
|
+
If the environment breaks (for example a `uv tool install --force` interrupted mid-upgrade) and the hook cannot start, every tool call is blocked by design. Run `python3 ~/.damage-control/bin/damage-control-breakglass unregister` from a normal terminal, then reinstall and run `init` again.
|
|
78
|
+
|
|
79
|
+
## Docs
|
|
80
|
+
|
|
81
|
+
- [docs/threat-model.md](docs/threat-model.md): what it protects against and the residuals
|
|
82
|
+
- [docs/coverage.md](docs/coverage.md): which tools are covered and how
|
|
83
|
+
- [docs/rule-authoring.md](docs/rule-authoring.md): writing rules, packs and overlays
|
|
84
|
+
- [docs/extending.md](docs/extending.md): profiles, the hook runtime, registration and repair
|
|
85
|
+
|
|
86
|
+
## Security
|
|
87
|
+
|
|
88
|
+
A bypass of a shipped rule that the threat model says should be caught is a vulnerability. Report it privately, see [SECURITY.md](SECURITY.md).
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
Apache-2.0. Contributions are signed off under the DCO, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# damage-control-dev
|
|
2
|
+
|
|
3
|
+
A guardrail layer for AI coding agents. It runs as a Claude Code `PreToolUse` hook and **blocks or asks before destructive commands, secret access, protected-path writes and risky MCP calls**, before the tool runs.
|
|
4
|
+
|
|
5
|
+
It is a seatbelt, not a sandbox. See [What it is not](#what-it-is-not).
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
uv tool install damage-control-dev # or: pipx install damage-control-dev
|
|
9
|
+
damage-control-dev init # register the hooks, self-test them, record the install
|
|
10
|
+
damage-control-dev status # read-only drift report
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Supports **Claude Code on macOS and Linux**, Python 3.9 or newer. Nothing else is supported or planned.
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
|
|
17
|
+
- Guards Bash, Edit, Write, Read and MCP tool calls through one policy ladder (allow, ask, block).
|
|
18
|
+
- Re-scans wrapped commands as commands in their own right: `ssh host "..."`, `sh -c`, database clients (`psql -c`, `mysql -e`), `git -c` keys that run programs.
|
|
19
|
+
- Protects its own control plane: the hook scripts, the settings that register them, and its policy file cannot be edited by the agent it guards.
|
|
20
|
+
- Fails closed: any crash or import failure in the hook exits 2 (block), and `init` registers the hook with `onFailure: block` (Claude Code 2.1.295 or newer) so a missing interpreter blocks the call instead of silently allowing it.
|
|
21
|
+
- Unattended mode: when no human can answer a prompt, an `ask` becomes a block unless a rule carries an explicit grant.
|
|
22
|
+
- Rules ship as groups that are on by default (core, git, registry, payloads, remote, MCP tools, control plane) and opt-in vendor packs: `aws`, `gcp`, `firebase`, `cloud-hosting`, `databases`, `containers`, `infrastructure`, `publish`, `tmux`. Every rule has a frozen, stable id.
|
|
23
|
+
- Offline: after `init` nothing touches the network.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
damage-control-dev check "git push --force origin main" # what would the hooks decide?
|
|
27
|
+
damage-control-dev rules # list enforced rule ids
|
|
28
|
+
damage-control-dev packs # list packs; enabling is human-terminal only
|
|
29
|
+
damage-control-dev doctor --fix # self-test and repair
|
|
30
|
+
damage-control-dev uninstall # remove exactly our entries
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## What it is not
|
|
34
|
+
|
|
35
|
+
- Not a sandbox, and not a boundary against a determined adversary. A process running as the same OS user can edit anything this tool can.
|
|
36
|
+
- Only as strong as the harness's hook surface: commands you type yourself with `!`, tools that have no hook event, and a hook that times out are outside its reach.
|
|
37
|
+
- No network egress filtering, containment or resource limits.
|
|
38
|
+
- Expect false positives and false negatives. The policy is: ask, then learn.
|
|
39
|
+
|
|
40
|
+
See [docs/threat-model.md](docs/threat-model.md).
|
|
41
|
+
|
|
42
|
+
## Where things live
|
|
43
|
+
|
|
44
|
+
Everything the installer keeps is under `~/.damage-control/` (or `$DAMAGE_CONTROL_HOME`):
|
|
45
|
+
|
|
46
|
+
- `damagecontrol.yml`: the protected policy (kill switch, `packs:`, `disabled_groups:`)
|
|
47
|
+
- `damage-control/`, `tooldefs/`: your own rule overlays
|
|
48
|
+
- `state/install.json`: what `init` recorded (interpreter, ruleset digest, per-scope write hash); `state/backups/` holds first-write backups of your settings file
|
|
49
|
+
- `bin/damage-control-breakglass`: a stdlib-only script that unregisters the hooks if the Python environment is ever broken
|
|
50
|
+
|
|
51
|
+
A policy with no `packs:` key loads the default groups and no vendor packs; an unreadable policy loads everything.
|
|
52
|
+
|
|
53
|
+
If the environment breaks (for example a `uv tool install --force` interrupted mid-upgrade) and the hook cannot start, every tool call is blocked by design. Run `python3 ~/.damage-control/bin/damage-control-breakglass unregister` from a normal terminal, then reinstall and run `init` again.
|
|
54
|
+
|
|
55
|
+
## Docs
|
|
56
|
+
|
|
57
|
+
- [docs/threat-model.md](docs/threat-model.md): what it protects against and the residuals
|
|
58
|
+
- [docs/coverage.md](docs/coverage.md): which tools are covered and how
|
|
59
|
+
- [docs/rule-authoring.md](docs/rule-authoring.md): writing rules, packs and overlays
|
|
60
|
+
- [docs/extending.md](docs/extending.md): profiles, the hook runtime, registration and repair
|
|
61
|
+
|
|
62
|
+
## Security
|
|
63
|
+
|
|
64
|
+
A bypass of a shipped rule that the threat model says should be caught is a vulnerability. Report it privately, see [SECURITY.md](SECURITY.md).
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
Apache-2.0. Contributions are signed off under the DCO, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
name = "damage-control-dev"
|
|
3
3
|
dynamic = ["version"]
|
|
4
4
|
description = "Damage control for AI coding agents: a PreToolUse guard that blocks or asks before destructive commands and protected-path writes (Claude Code)."
|
|
5
|
+
readme = "README.md"
|
|
5
6
|
requires-python = ">=3.9"
|
|
6
7
|
license = { text = "Apache-2.0" }
|
|
7
8
|
authors = [{ name = "dotdev", email = "dev@dotdev.dev" }]
|
|
8
|
-
keywords = ["ai", "agent", "claude-code", "safety", "hooks"]
|
|
9
|
+
keywords = ["ai", "agent", "claude-code", "safety", "hooks", "guardrails"]
|
|
9
10
|
classifiers = [
|
|
11
|
+
"Development Status :: 4 - Beta",
|
|
12
|
+
"License :: OSI Approved :: Apache Software License",
|
|
13
|
+
"Intended Audience :: Developers",
|
|
10
14
|
"Operating System :: MacOS",
|
|
11
15
|
"Operating System :: POSIX :: Linux",
|
|
12
16
|
"Programming Language :: Python :: 3",
|
|
@@ -16,6 +20,12 @@ classifiers = [
|
|
|
16
20
|
# bundled rules ship as JSON, so a hook with no PyYAML still enforces every bundled rule.
|
|
17
21
|
dependencies = ["pyyaml>=6.0"]
|
|
18
22
|
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://github.com/dotdevdotdev/damage-control-dev"
|
|
25
|
+
Source = "https://github.com/dotdevdotdev/damage-control-dev"
|
|
26
|
+
Issues = "https://github.com/dotdevdotdev/damage-control-dev/issues"
|
|
27
|
+
Security = "https://github.com/dotdevdotdev/damage-control-dev/security/policy"
|
|
28
|
+
|
|
19
29
|
[project.scripts]
|
|
20
30
|
damage-control-dev = "damage_control.cli:main"
|
|
21
31
|
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: damage-control-dev
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Damage control for AI coding agents: a PreToolUse guard that blocks or asks before destructive commands and protected-path writes (Claude Code).
|
|
5
|
-
Author-email: dotdev <dev@dotdev.dev>
|
|
6
|
-
License: Apache-2.0
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
License-File: NOTICE
|
|
9
|
-
Keywords: agent,ai,claude-code,hooks,safety
|
|
10
|
-
Classifier: Operating System :: MacOS
|
|
11
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
-
Requires-Python: >=3.9
|
|
15
|
-
Requires-Dist: pyyaml>=6.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/cloud-hosting.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/cloud-hosting.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/containers.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/containers.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/control-plane.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/control-plane.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/databases.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/databases.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/firebase.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/firebase.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/infrastructure.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/infrastructure.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/mcp-tools.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/mcp-tools.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/outbound.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/outbound.yaml
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/payloads.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/payloads.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/registry.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/rules/registry.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/docker.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/docker.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/kubectl.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/kubectl.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/terraform.json
RENAMED
|
File without changes
|
{damage_control_dev-0.1.0 → damage_control_dev-0.1.1}/src/damage_control/tooldefs/terraform.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|