Skip to content

ccproxy.cli.options.claude_options

ccproxy.cli.options.claude_options

Claude-specific CLI options.

ClaudeOptions

ClaudeOptions(
    max_thinking_tokens=None,
    allowed_tools=None,
    disallowed_tools=None,
    claude_cli_path=None,
    append_system_prompt=None,
    permission_mode=None,
    max_turns=None,
    cwd=None,
    permission_prompt_tool_name=None,
)

Container for all Claude-related CLI options.

This class provides a convenient way to include all Claude-related options in a command using typed attributes.

Parameters:

Name Type Description Default
max_thinking_tokens int | None

Maximum thinking tokens for Claude Code

None
allowed_tools str | None

List of allowed tools (comma-separated)

None
disallowed_tools str | None

List of disallowed tools (comma-separated)

None
claude_cli_path str | None

Path to Claude CLI executable

None
append_system_prompt str | None

Additional system prompt to append

None
permission_mode str | None

Permission mode

None
max_turns int | None

Maximum conversation turns

None
cwd str | None

Working directory path

None
permission_prompt_tool_name str | None

Permission prompt tool name

None
Source code in ccproxy/cli/options/claude_options.py
def __init__(
    self,
    max_thinking_tokens: int | None = None,
    allowed_tools: str | None = None,
    disallowed_tools: str | None = None,
    claude_cli_path: str | None = None,
    append_system_prompt: str | None = None,
    permission_mode: str | None = None,
    max_turns: int | None = None,
    cwd: str | None = None,
    permission_prompt_tool_name: str | None = None,
):
    """Initialize Claude options.

    Args:
        max_thinking_tokens: Maximum thinking tokens for Claude Code
        allowed_tools: List of allowed tools (comma-separated)
        disallowed_tools: List of disallowed tools (comma-separated)
        claude_cli_path: Path to Claude CLI executable
        append_system_prompt: Additional system prompt to append
        permission_mode: Permission mode
        max_turns: Maximum conversation turns
        cwd: Working directory path
        permission_prompt_tool_name: Permission prompt tool name
    """
    self.max_thinking_tokens = max_thinking_tokens
    self.allowed_tools = allowed_tools
    self.disallowed_tools = disallowed_tools
    self.claude_cli_path = claude_cli_path
    self.append_system_prompt = append_system_prompt
    self.permission_mode = permission_mode
    self.max_turns = max_turns
    self.cwd = cwd
    self.permission_prompt_tool_name = permission_prompt_tool_name

validate_max_thinking_tokens

validate_max_thinking_tokens(ctx, param, value)

Validate max thinking tokens.

Source code in ccproxy/cli/options/claude_options.py
def validate_max_thinking_tokens(
    ctx: typer.Context, param: typer.CallbackParam, value: int | None
) -> int | None:
    """Validate max thinking tokens."""
    if value is None:
        return None

    if value < 0:
        raise typer.BadParameter("Max thinking tokens must be non-negative")

    return value

validate_max_turns

validate_max_turns(ctx, param, value)

Validate max turns.

Source code in ccproxy/cli/options/claude_options.py
def validate_max_turns(
    ctx: typer.Context, param: typer.CallbackParam, value: int | None
) -> int | None:
    """Validate max turns."""
    if value is None:
        return None

    if value < 1:
        raise typer.BadParameter("Max turns must be at least 1")

    return value

validate_permission_mode

validate_permission_mode(ctx, param, value)

Validate permission mode.

Source code in ccproxy/cli/options/claude_options.py
def validate_permission_mode(
    ctx: typer.Context, param: typer.CallbackParam, value: str | None
) -> str | None:
    """Validate permission mode."""
    if value is None:
        return None

    valid_modes = {"default", "acceptEdits", "bypassPermissions"}
    if value not in valid_modes:
        raise typer.BadParameter(
            f"Permission mode must be one of: {', '.join(valid_modes)}"
        )

    return value

validate_claude_cli_path

validate_claude_cli_path(ctx, param, value)

Validate Claude CLI path.

Source code in ccproxy/cli/options/claude_options.py
def validate_claude_cli_path(
    ctx: typer.Context, param: typer.CallbackParam, value: str | None
) -> str | None:
    """Validate Claude CLI path."""
    if value is None:
        return None

    path = Path(value)
    if not path.exists():
        raise typer.BadParameter(f"Claude CLI path does not exist: {value}")

    return value

validate_cwd

validate_cwd(ctx, param, value)

Validate working directory.

Source code in ccproxy/cli/options/claude_options.py
def validate_cwd(
    ctx: typer.Context, param: typer.CallbackParam, value: str | None
) -> str | None:
    """Validate working directory."""
    if value is None:
        return None

    path = Path(value)
    if not path.exists():
        raise typer.BadParameter(f"Working directory does not exist: {value}")
    if not path.is_dir():
        raise typer.BadParameter(f"Working directory is not a directory: {value}")

    return value