Skip to main content

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}