safe_chains/cli.rs
1use clap::Parser;
2use crate::verdict::SafetyLevel;
3
4#[derive(Parser)]
5#[command(name = "safe-chains")]
6#[command(about = "Auto-allow safe, read-only bash commands in agentic coding tools")]
7#[command(version)]
8pub struct Cli {
9 /// Command string to check (omit for Claude hook mode via stdin)
10 pub command: Option<String>,
11
12 /// Safety level threshold (inert, safe-read, safe-write). Only commands at or below this level pass.
13 #[arg(long, value_enum)]
14 pub level: Option<SafetyLevel>,
15
16 /// List all supported commands in Markdown format
17 #[arg(long)]
18 pub list_commands: bool,
19
20 /// Generate OpenCode permission config (merges with existing opencode.json)
21 #[arg(long)]
22 pub opencode_config: bool,
23}