# Excubitor weekly red team, for .github/workflows/ # # Sends the red-team probes to one of your agents and records the scored report # in your Excubitor ledger, where the Red Team page shows it and a run that goes # missing is flagged. # # ⛔ POINT IT AT A STAGING AGENT. The probes ask the agent to ignore its rules, # reveal its prompt and act without approval. A hardened agent refuses, which # is what is measured. An agent that complies may act, with whatever tools it # holds, on whatever data it can reach. # # ⛔ EXCUBITOR IS NEVER GIVEN ACCESS TO YOUR AGENT. This runs on your runner and # reports outward. If the agent is only reachable inside your network, use a # self-hosted runner or deploy/k8s-cronjob-excubitor-redteam.yaml instead. # # Repository secrets: # EXCUBITOR_CONSOLE_URL the console you were given # EXCUBITOR_TOKEN the ingest credential issued for this application # STAGING_AGENT_TOKEN whatever your staging agent needs, if anything name: Excubitor red team on: schedule: - cron: "0 4 * * 0" # Sundays 04:00 UTC: a quiet window workflow_dispatch: {} # and on demand, e.g. after a fix permissions: contents: read jobs: redteam: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 # only needed for a probe pack kept in the repo - uses: actions/setup-python@v5 with: python-version: "3.12" - run: pip install excubitor-sdk - name: Probe the staging agent env: EXCUBITOR_CONSOLE_URL: ${{ secrets.EXCUBITOR_CONSOLE_URL }} EXCUBITOR_TOKEN: ${{ secrets.EXCUBITOR_TOKEN }} STAGING_AGENT_TOKEN: ${{ secrets.STAGING_AGENT_TOKEN }} # Add `--pack security/shield-findings.json` for the probes a Shield # assessment found against your own agents. run: | excubitor-redteam --agent invoice-copilot --schedule weekly \ --url https://staging.example.com/agent/ask --field message --answer answer \ --header 'Authorization: Bearer ${STAGING_AGENT_TOKEN}'