cleansh 0.1.4

Sanitize your terminal output. One tool. One purpose.
Documentation
rules:
  - name: "email"
    pattern: "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})"
    replace_with: "[EMAIL_REDACTED]"
    description: "Standard email address pattern."
    multiline: false
    dot_matches_new_line: false

  - name: "ipv4_address"
    pattern: "\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"
    replace_with: "[IPV4_REDACTED]"
    description: "Standard IPv4 address pattern."
    multiline: false
    dot_matches_new_line: false

  - name: "jwt_token"
    pattern: "(ey[a-zA-Z0-9-_=]+\\.[a-zA-Z0-9-_=]+\\.[a-zA-Z0-9-_=]+)"
    replace_with: "[JWT_REDACTED]"
    description: "JSON Web Token (JWT) pattern."
    multiline: false
    dot_matches_new_line: false

  - name: "aws_access_key"
    pattern: "(AKIA[0-9A-Z]{16})"
    replace_with: "[AWS_ACCESS_KEY_REDACTED]"
    description: "AWS Access Key ID pattern (e.g., AKIA...)."
    multiline: false
    dot_matches_new_line: false

  - name: "aws_secret_key"
    # Removed unsupported lookaround and inline flags
    pattern: "\\b[A-Za-z0-9/+=]{40}\\b"
    replace_with: "[AWS_SECRET_KEY_REDACTED]"
    description: "AWS Secret Access Key pattern (40 characters base64-like string). Case-insensitive, matches whole words."
    multiline: false
    dot_matches_new_line: false

  - name: "gcp_api_key"
    pattern: "(AIza[0-9A-Za-z-_]{35})"
    replace_with: "[GCP_API_KEY_REDACTED]"
    description: "Google Cloud Platform API Key pattern (AIza...). Matches common structure."
    multiline: false
    dot_matches_new_line: false

  - name: "ssh_private_key_rsa"
    pattern: "BEGIN (RSA|DSA|EC|OPENSSH) PRIVATE KEY-----.*?-----END (RSA|DSA|EC|OPENSSH) PRIVATE KEY"
    replace_with: "[SSH_PRIVATE_KEY_REDACTED]"
    description: "Detects common SSH private key blocks (RSA, DSA, EC, OPENSSH). Matches multiline."
    multiline: true 
    dot_matches_new_line: true 

  - name: "generic_hex_secret_32"
    pattern: "\\b[0-9a-fA-F]{32}\\b"
    replace_with: "[HEX_SECRET_32_REDACTED]"
    description: "Common 32-character hexadecimal secret pattern (e.g., API keys, hashes). Matches whole words."
    multiline: false
    dot_matches_new_line: false

  - name: "generic_hex_secret_64"
    pattern: "\\b[0-9a-fA-F]{64}\\b"
    replace_with: "[HEX_SECRET_64_REDACTED]"
    description: "Common 64-character hexadecimal secret pattern (e.g., API keys, hashes). Matches whole words."
    multiline: false
    dot_matches_new_line: false

  - name: "generic_token"
    pattern: "\\b(?:[a-z_]+_[a-z0-9_]+|[A-Z]{3,}[A-Z0-9]*)\\b"
    replace_with: "[GENERIC_TOKEN_REDACTED]"
    description: "Generic pattern for common tokens (e.g., access_token_12345, TOKENXYZ)."
    multiline: false
    dot_matches_new_line: false

  - name: "absolute_linux_path"
    pattern: "(/home/[a-zA-Z0-9_.-]+(?:/[a-zA-Z0-9_.-]+)*)"
    replace_with: "~$1"
    description: "Linux/Unix absolute path starting with /home/ followed by username."
    multiline: false
    dot_matches_new_line: false

  - name: "absolute_macos_path"
    pattern: "(/Users/[a-zA-Z0-9_.-]+(?:/[a-zA-Z0-9_.-]+)*)"
    replace_with: "~$1"
    description: "macOS absolute path starting with /Users/ followed by username."
    multiline: false
    dot_matches_new_line: false