{"adoption": {"forks": 238, "observed_at": "2026-08-28T04:09:31.461316+00:00", "stars": 5840}, "canonical_url": "https://ross.abutalabs.com/products/destructive_command_guard", "card": {"archived": false, "artifact_type": "cli-tool", "description": "The Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.", "domain": ["developer-tools", "security"], "enriched": true, "function": ["security", "cli", "developer-tools"], "health_score": 100, "homepage": null, "language": "Rust", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["Dicklesworthstone/destructive_command_guard"], "name": "Dicklesworthstone/destructive_command_guard", "platform": ["windows", "cli", "rust"], "pushed_at": "2026-08-26T23:00:15+00:00", "repo": "Dicklesworthstone/destructive_command_guard", "stars": 5840, "tags": ["ai-agent-hooks", "safety", "git-protection", "claude-code", "command-blocking", "ai-agents", "command-line", "linux", "macos"], "topics": ["ai-agents", "cli", "developer-tools", "rust", "safety", "git"], "urls": [], "use_cases": ["prevent AI agents from running destructive shell commands", "block dangerous git commands from Claude Code", "protect my repo from accidental deletion by coding agents", "add a safety guard to Codex CLI or Gemini CLI", "stop an AI agent from running rm -rf", "sandbox dangerous commands executed by AI coding assistants"], "what_it_is": "A high-performance Rust CLI hook that intercepts and blocks destructive git and shell commands before AI coding agents execute them. It integrates with tools like Claude Code, Codex CLI, Gemini CLI, Cursor, and Copilot CLI to protect against accidental deletion.", "when_to_avoid": ["you need full sandboxing or OS-level isolation of agent processes rather than command filtering", "you don't use AI coding agents and just want general shell safety aliases", "you require a permissively licensed dependency (license is custom)"], "when_to_choose": ["you use AI coding agents (Claude Code, Codex, Gemini CLI, Cursor, etc.) and want automatic protection from destructive commands", "you want a fast, lightweight Rust-based hook that installs across many agent tools", "you need per-command blocking before execution rather than after-the-fact recovery"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/destructive_command_guard", "repo": "Dicklesworthstone/destructive_command_guard", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.461316+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:51:55.351109+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007dc4e2df2df203252080e05d669aaaf0e9b21f33c532d88c9f1186425580d5", "fetched_at": "2026-08-28T04:09:31.461316+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Dicklesworthstone/destructive_command_guard"}, {"content_hash": "c749e11a97b02f25a8ef5ca697ea037e7a8dd80dc3802983862cd420e9b64c26", "fetched_at": "2026-08-29T08:47:22.432824+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/destructive_command_guard"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 17, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 238, "days_push": 7, "days_rel": 9, "gap_med": 0, "n_releases_24m": 56}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}