safe-chains 0.197.0

Auto-allow safe bash commands in agentic coding tools
Documentation
[[command]]
name = "dvc"
description = "Data Version Control — Git-companion tool for ML/data projects. Many subcommands `pull`, `push`, `fetch`, `import`, `import-url` contact remote storage (S3/GS/Azure/SSH/HTTP — network). `repro` and `exp run` execute pipeline scripts (arbitrary code). `add`, `commit`, `move`, `remove`, `unprotect`, `checkout` modify working tree and DVC files (project-local SafeWrite). Read subcommands: `version`, `status`, `diff`, `metrics show`, `params diff`, `plots show`, `dag`, `data status`, `cache dir`, `doctor`, `config --show`, `list/list-url`. The carve-out covers the read-only / diagnostic surface here."
url = "https://dvc.org/"
researched_version = "dvc 3.x"
bare_flags = ["--help", "--version", "-h", "-V"]
examples_safe = [
    "dvc add data.csv",
    "dvc status",
    "dvc version",
]
examples_denied = [
    "dvc add --to-remote data.csv",
    "dvc push",
    "dvc repro",
]

[[command.sub]]
name = "version"
standalone = ["--help", "-h"]

[[command.sub]]
name = "doctor"
level = "SafeRead"
bare = true
standalone = ["--help", "-h"]

[[command.sub]]
name = "status"
level = "SafeRead"
bare = true
tolerate_unknown_short = true
standalone = ["--all-branches", "--all-commits", "--all-tags", "--cloud", "--help", "--json", "--quiet", "--remote", "--verbose", "-A", "-T", "-a", "-c", "-h", "-q", "-v"]

[[command.sub]]
name = "diff"
level = "SafeRead"
bare = true
tolerate_unknown_short = true
standalone = ["--help", "--hide-missing", "--json", "--md", "--quiet", "--show-hash", "--targets", "--verbose", "-h", "-q", "-v"]

[[command.sub]]
name = "dag"
level = "SafeRead"
bare = true
tolerate_unknown_short = true
standalone = ["--dot", "--full", "--help", "--mermaid", "--md", "--outs", "--quiet", "--verbose", "-h", "-q", "-v"]

[[command.sub]]
name = "list"
level = "SafeRead"
bare = false
tolerate_unknown_short = true
standalone = ["--dvc-only", "--help", "--json", "--quiet", "-R", "-h", "-q"]
valued = ["--rev"]

[[command.sub]]
name = "help"
allow_all = true

[[command.sub]]
name = "add"
level = "SafeWrite"
bare = false
standalone = ["--external", "--file", "--force", "--glob", "--help", "--no-commit", "--quiet", "--recursive", "--remote", "--verbose", "-R", "-f", "-h", "-q", "-v"]
valued = ["--desc", "--file", "--meta", "--out", "--remote", "--type", "-o"]

[[command.sub]]
name = "commit"
level = "SafeWrite"
bare = true
tolerate_unknown_short = true
standalone = ["--data-only", "--force", "--help", "--no-commit", "--quiet", "--recursive", "--relink", "--verbose", "-R", "-d", "-f", "-h", "-q", "-v"]

[[command.sub]]
name = "checkout"
level = "SafeWrite"
bare = true
tolerate_unknown_short = true
standalone = ["--allow-missing", "--force", "--help", "--quiet", "--recursive", "--relink", "--summary", "-R", "-f", "-h", "-q"]

[[command.sub]]
name = "remove"
level = "SafeWrite"
bare = false
tolerate_unknown_short = true
standalone = ["--help", "--outs", "--quiet", "--verbose", "-h", "-q", "-v"]

[[command.sub]]
name = "move"
level = "SafeWrite"
bare = false
tolerate_unknown_short = true
standalone = ["--help", "--quiet", "--verbose", "-h", "-q", "-v"]

[[command.sub]]
name = "unprotect"
level = "SafeWrite"
bare = false
tolerate_unknown_short = true
standalone = ["--help", "--quiet", "-h", "-q"]

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

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

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

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

[[command.sub]]
name = "import-url"
candidate = true

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

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

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

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

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

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

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

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

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