#!/usr/bin/env bash set -uo pipefail # CASAN harness preflight (Plan-15/13 enforcement wiring). # Runs governance cores BEFORE a model call. Currently enforces RAI data # governance: a prompt classified PII/confidential must not go to a CLOUD model # without approval. Opt-in via CASAN_PREFLIGHT=1 so existing flows are unchanged. # # Args mirror model-router: [--role R] [--model M] # Env: CASAN_MODEL_APPROVAL (approval token for sending sensitive data to cloud) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROMPT="${1:-}" MODEL="" while [[ $# -gt 0 ]]; do case "$1" in --model) MODEL="${2:-}"; shift 2 ;; *) shift ;; esac done case "$MODEL" in openai:*|anthropic:*) if [[ -n "$PROMPT" && -f "$PROMPT" ]]; then if ! python3 "$SCRIPT_DIR/rai-guard.py" check-cloud --input "$PROMPT" --target cloud \ --approval "${CASAN_MODEL_APPROVAL:-}" >/dev/null 2>&1; then echo "PREFLIGHT_BLOCK rai-check-cloud model=$MODEL" >&2 exit 1 fi fi ;; esac echo "PREFLIGHT_OK model=${MODEL:-local}" exit 0