Skip to main content

Overview

Andi AIRun scripts are perfect for CI/CD workflows: automated testing, code review, documentation generation, and more. This guide covers how to run scripts reliably in automation environments.

Running Scripts in CI/CD

Basic CI Script

Key flags for CI:
  • --apikey — Use API key authentication (set ANTHROPIC_API_KEY environment variable)
  • --haiku — Fast, cost-effective model for routine tasks
  • --skip — No permission prompts (required for unattended execution)

GitHub Actions Example

.github/workflows/ai-review.yml

GitLab CI Example

.gitlab-ci.yml

Permission Flags for Automation

The --skip Shortcut

For quick automation, use --skip (shorthand for --dangerously-skip-permissions):

The --bypass Alternative

Use --bypass (shorthand for --permission-mode bypassPermissions) when you need composability with other permission settings:

Granular Tool Access

For better security, restrict to specific tools with --allowedTools:

Permission Flag Precedence

ai resolves permission shortcuts before passing flags to Claude Code. When conflicts are detected, explicit flags take precedence:
  • --permission-mode <value> and --dangerously-skip-permissions are explicit — they always win
  • --skip and --bypass are shortcuts — ignored with a warning if an explicit flag is also present
  • CLI flags override shebang flags — if you run ai --permission-mode plan script.md and the script has --skip in its shebang, plan mode is used

Exit Codes and Error Handling

Exit Codes

Andi AIRun returns standard Unix exit codes:
  • 0 — Success
  • 1 — General error (AI task failed, tool error, etc.)
  • 2 — Invalid arguments or configuration

Handling Failures in Scripts

Use standard shell error handling:

Conditional Execution

Retry Logic

Real-World Examples

Example 1: Automated Test Runner

run-tests.md
Usage in CI:

Example 2: Documentation Generator

generate-docs.md
Usage in CI:

Example 3: Security Audit

security-audit.md
Usage in CI:

Example 4: PR Description Generator

pr-description.md
Usage:

Flag Precedence

ai resolves flags from multiple sources. Higher sources override lower ones: | Priority | Source | Example | |----------|--------|---------|| | 1 (highest) | CLI flags | ai --aws --opus script.md | | 2 | Shebang flags | #!/usr/bin/env -S ai --ollama --low | | 3 | Saved defaults | ai --aws --opus --set-default | | 4 (lowest) | Auto-detection | Current Claude subscription | Example: A script has #!/usr/bin/env -S ai --ollama --low. Running ai script.md uses Ollama (shebang). Running ai --aws script.md uses AWS (CLI overrides shebang).

Passing Claude Code Flags

Any flag not recognized by ai is passed directly to Claude Code. Useful flags for automation: | Flag | Purpose | Example | |------|---------|---------|| | --skip | Shortcut for --dangerously-skip-permissions | Quick automation | | --bypass | Shortcut for --permission-mode bypassPermissions | Quick automation | | --max-turns N | Limit agentic loop iterations | Prevent runaway scripts | | --output-format stream-json | Structured JSON output | Pipeline integration | | --live | Stream text in real-time | Long-running scripts | Combine with ai flags freely:

Security Best Practices

Always run AI automation in sandboxed environments:
  1. Use containers — Run scripts inside Docker containers with limited permissions
  2. Restrict file access — Mount only necessary directories
  3. Network isolation — Use network policies to limit outbound connections
  4. Secret management — Never hardcode API keys; use environment variables or secret managers
  5. Code review — Review AI-generated changes before merging
  6. Audit logs — Log all AI actions for security monitoring

Docker Example

Run it:

Next Steps

Permissions

Deep dive into permission modes and security

Live Output

Stream progress for long-running CI jobs

Script Variables

Make scripts reusable with CLI overrides

Writing Scripts

Learn script basics and common patterns