hushspec 0.1.1

Portable specification types for AI agent security rules
Documentation
hushspec: "0.1.0"
name: strict
description: Strict security rules with minimal permissions

rules:
  forbidden_paths:
    patterns:
      - "**/.ssh/**"
      - "**/id_rsa*"
      - "**/id_ed25519*"
      - "**/id_ecdsa*"
      - "**/.aws/**"
      - "**/.env"
      - "**/.env.*"
      - "**/.git-credentials"
      - "**/.gitconfig"
      - "**/.gnupg/**"
      - "**/.kube/**"
      - "**/.docker/**"
      - "**/.npmrc"
      - "**/.password-store/**"
      - "**/pass/**"
      - "**/.1password/**"
      - "/etc/shadow"
      - "/etc/passwd"
      - "/etc/sudoers"
      - "**/AppData/Roaming/Microsoft/Credentials/**"
      - "**/AppData/Local/Microsoft/Credentials/**"
      - "**/AppData/Roaming/Microsoft/Vault/**"
      - "**/NTUSER.DAT"
      - "**/NTUSER.DAT.*"
      - "**/Windows/System32/config/SAM"
      - "**/Windows/System32/config/SECURITY"
      - "**/Windows/System32/config/SYSTEM"
      - "**/AppData/Roaming/Microsoft/SystemCertificates/**"
      - "**/*.reg"
      - "**/.vault/**"
      - "**/.secrets/**"
      - "**/credentials/**"
      - "**/private/**"
    exceptions: []

  egress:
    allow: []
    block: []
    default: block

  secret_patterns:
    patterns:
      - name: aws_access_key
        pattern: "AKIA[0-9A-Z]{16}"
        severity: critical
      - name: github_token
        pattern: "gh[ps]_[A-Za-z0-9]{36}"
        severity: critical
      - name: openai_key
        pattern: "sk-[A-Za-z0-9]{48}"
        severity: critical
      - name: anthropic_key
        pattern: "sk-ant-[A-Za-z0-9\\-]{95}"
        severity: critical
      - name: private_key
        pattern: "-----BEGIN\\s+(RSA\\s+)?PRIVATE\\s+KEY-----"
        severity: critical
      - name: npm_token
        pattern: "npm_[A-Za-z0-9]{36}"
        severity: critical
      - name: slack_token
        pattern: "xox[baprs]-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*"
        severity: critical
      - name: generic_api_key
        pattern: "(?i)(api[_\\-]?key|apikey)\\s*[:=]\\s*[A-Za-z0-9]{32,}"
        severity: error
    skip_paths:
      - "**/test/**"
      - "**/tests/**"

  patch_integrity:
    max_additions: 500
    max_deletions: 200
    require_balance: true
    max_imbalance_ratio: 5.0
    forbidden_patterns:
      - "(?i)disable[\\s_\\-]?(security|auth|ssl|tls)"
      - "(?i)skip[\\s_\\-]?(verify|validation|check)"
      - "(?i)rm\\s+-rf\\s+/"
      - "(?i)chmod\\s+777"
      - "(?i)eval\\s*\\("
      - "(?i)exec\\s*\\("
      - "(?i)reverse[_\\-]?shell"
      - "(?i)bind[_\\-]?shell"

  tool_access:
    allow:
      - read_file
      - list_directory
      - search
      - grep
    block: []
    require_confirmation: []
    default: block
    max_args_size: 524288