safe-chains 0.210.0

Auto-allow safe bash commands in agentic coding tools
Documentation
[[command]]
name = "linode-cli"
description = "Command-line interface for managing Akamai/Linode cloud resources (compute instances, volumes, Kubernetes, databases, DNS). The full CLI can create, modify, and delete infrastructure. Authenticated via a personal access token (or LINODE_CLI_TOKEN); every non-help command is an authenticated call to the Linode API using the ambient token, so `list`/`view` reads enumerate the account's live resources. The bundled `obj` plugin (S3-compatible object storage) is deliberately unsupported: on first use on a host it auto-creates an S3 access key via the API and stores it, so even `obj ls` triggers a remote credential mutation. `configure` (interactive credential write), the `ssh`/`get-kubeconfig`/`firewall-editor`/`image-upload` plugins, and every create/update/delete/boot/reboot/resize/rebuild action mutate state and are excluded. Python-based; released roughly every 2-4 weeks."
url = "https://www.linode.com/docs/products/tools/cli/get-started/"
researched_version = "5.68.0 (2026-05-28)"
bare_flags = ["--help", "--version"]

examples_safe = [
  "linode-cli linodes list",
  "linode-cli linodes view 123",
  "linode-cli linodes types",
  "linode-cli linodes kernels",
  "linode-cli regions list",
  "linode-cli images list",
  "linode-cli volumes list",
  "linode-cli account view",
  "linode-cli account invoices-list",
  "linode-cli tickets list",
  "linode-cli stackscripts list",
  "linode-cli vpcs list",
  "linode-cli tags list",
]
examples_denied = [
  "linode-cli linodes create --type g6-nanode-1 --region us-east --image linode/debian12",
  "linode-cli linodes delete 123",
  "linode-cli linodes reboot 123",
  "linode-cli configure",
  "linode-cli ssh root@123",
  "linode-cli obj ls",
  "linode-cli obj get my-bucket file",
]
[command.wrapper]
standalone = ["--json", "--markdown", "--no-headers", "--pretty", "--suppress-warnings", "--text"]
valued = ["--delimiter"]

[[command.sub]]
name = "linodes"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]
[[command.sub.sub]]
name = "types"
standalone = ["--help"]
[[command.sub.sub]]
name = "kernels"
standalone = ["--help"]

[[command.sub]]
name = "regions"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "images"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "volumes"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "domains"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "nodebalancers"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "firewalls"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "lke"
[[command.sub.sub]]
name = "clusters-list"
standalone = ["--help"]
[[command.sub.sub]]
name = "cluster-view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "account"
[[command.sub.sub]]
name = "view"
standalone = ["--help"]
[[command.sub.sub]]
name = "events-list"
standalone = ["--help"]
[[command.sub.sub]]
name = "invoices-list"
standalone = ["--help"]
[[command.sub.sub]]
name = "invoice-view"
bare = false
standalone = ["--help"]
[[command.sub.sub]]
name = "transfer"
standalone = ["--help"]
[[command.sub.sub]]
name = "notifications-list"
standalone = ["--help"]

[[command.sub]]
name = "profile"
[[command.sub.sub]]
name = "view"
standalone = ["--help"]

[[command.sub]]
name = "databases"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]

[[command.sub]]
name = "tickets"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "stackscripts"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

[[command.sub]]
name = "vpcs"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]
[[command.sub.sub]]
name = "view"
bare = false
standalone = ["--help"]

# `tags list` only. `tags create`/`delete` mutate and are excluded.
[[command.sub]]
name = "tags"
[[command.sub.sub]]
name = "list"
standalone = ["--help"]

[[command.sub]]
name = "networking"
[[command.sub.sub]]
name = "ips-list"
standalone = ["--help"]
[[command.sub.sub]]
name = "ip-view"
bare = false
standalone = ["--help"]