safe-chains 0.220.0

Auto-allow safe bash commands in agentic coding tools
Documentation
[[command]]
name = "hcloud"
description = "Command-line interface for managing Hetzner Cloud resources (servers, volumes, networks, firewalls, load balancers). The full CLI can create, modify, and delete infrastructure. Authenticated via project-scoped API token. Open-source Go project with moderate release velocity."
url = "https://github.com/hetznercloud/cli"
researched_version = "v1.66.0 (2026-06-24)"
bare_flags = ["--help", "--version", "-h", "-v"]

examples_safe = [
  "hcloud version",
  "hcloud server list",
  "hcloud server list -o json",
  "hcloud server describe my-server",
  "hcloud image list --type system",
  "hcloud datacenter list",
  "hcloud iso list",
  "hcloud zone list",
  "hcloud all list",
  "hcloud context list",
]
examples_denied = [
  "hcloud server create --name x --type cx11 --image debian-12",
  "hcloud server delete my-server",
  "hcloud server ssh my-server",
  "hcloud server poweroff my-server",
  "hcloud context create prod",
]
[command.wrapper]
valued = ["--poll-interval"]

[[command.sub]]
name = "version"

[[command.sub]]
name = "context"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
[[command.sub.sub]]
name = "active"
standalone = ["--help", "-h"]

[[command.sub]]
name = "datacenter"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "location"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "server-type"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "server"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "image"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "--type", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "volume"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "network"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "firewall"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "load-balancer"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "floating-ip"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "primary-ip"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "ssh-key"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "certificate"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "placement-group"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

# Reference catalogs (read-only): images/ISOs and type/box catalogs.
[[command.sub]]
name = "iso"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "load-balancer-type"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "storage-box-type"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "storage-box"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

[[command.sub]]
name = "zone"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "--selector", "-l", "-o"]
[[command.sub.sub]]
name = "describe"
bare = false
standalone = ["--help", "-h"]
valued = ["--output", "-o"]

# `hcloud all list` enumerates every resource (read-only).
[[command.sub]]
name = "all"
[[command.sub.sub]]
name = "list"
standalone = ["--help", "-h"]
valued = ["--output", "-o"]