safe-chains 0.210.2

Auto-allow safe bash commands in agentic coding tools
Documentation
[[command]]
name = "sem"
description = "Semantic version control CLI from Ataraxy-Labs — operates on a git repository like git itself, but at the level of code entities (functions / classes / methods) extracted via tree-sitter (26 languages). Subcommands include `diff` (entity-level diff between commits / against staged), `blame` (per-entity attribution), `log` (commit history filtered to a single entity), `impact` (downstream dependents / dependent tests of an entity), `entities` (list all entities in a path), and `context` (assemble entity-centric context for an LLM). All of these read the git history through the in-process git2 library — no shell-out to git, no language servers, no network. `setup` registers sem as the configured git differ and installs a pre-commit hook; `unsetup` removes them. `mcp` launches a Model Context Protocol server (long-running daemon) so AI agents can call sem over MCP. `update` self-replaces the installed `sem` binary."
url = "https://github.com/Ataraxy-Labs/sem"
researched_version = "sem 0.13.0 (2026-06-17)"
bare_flags = ["--help", "--version"]
examples_safe = [
    "sem --version",
    "sem diff",
    "sem diff --staged",
    "sem diff --commit HEAD~5",
    "sem diff --from main --to HEAD --format json",
    "sem blame src/auth.ts",
    "sem log my_function --limit 20",
    "sem impact my_function --tests --json",
    "sem entities src/",
    "sem context my_function --budget 4000",
]
examples_denied = [
    "sem setup",
    "sem unsetup",
    "sem mcp",
]

[[command.sub]]
name = "diff"
level = "Inert"
bare = true
standalone = [
    "--help", "--json", "--staged",
    "--verbose", "-v",
]
valued = [
    "--commit", "--file-exts",
    "--format", "--from", "--to",
]

[[command.sub]]
name = "blame"
level = "Inert"
bare = false
standalone = ["--help", "--json"]

[[command.sub]]
name = "log"
level = "Inert"
bare = false
standalone = [
    "--help", "--json",
    "--verbose", "-v",
]
valued = ["--limit"]

[[command.sub]]
name = "impact"
level = "Inert"
bare = false
standalone = [
    "--dependents", "--deps",
    "--help", "--json",
    "--no-default-excludes",
    "--tests",
]
valued = ["--file"]

[[command.sub]]
name = "entities"
level = "Inert"
bare = true
standalone = [
    "--help", "--json",
    "--no-default-excludes",
]

[[command.sub]]
name = "context"
level = "Inert"
bare = false
standalone = [
    "--help", "--json",
    "--no-default-excludes",
]
valued = ["--budget"]

[[command.sub]]
name = "setup"
candidate = true

[[command.sub]]
name = "unsetup"
candidate = true

[[command.sub]]
name = "mcp"
candidate = true

[[command.sub]]
name = "update"
candidate = true