Skip to content
Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exoclaw-github

GitHub Actions channel for exoclaw.

Runs the exoclaw agent stack inside a GitHub Actions workflow, turning issues, PR comments, and workflow_dispatch into agent turns. Responses are posted as GitHub comments. Session history is persisted to a bot-state branch so conversations carry context across runs.

See it live: exoclaw-github-demo — open an issue or comment @exoclawbot and the bot will respond.

Quick start

Drop this into .github/workflows/exoclaw.yml:

name: exoclaw
on:
  issues:
    types: [opened]
  issue_comment:
    types: [created]
  pull_request:
    types: [opened]
  pull_request_review_comment:
    types: [created]
  workflow_dispatch:
    inputs:
      message:
        description: "Message to send to the agent"
        required: true
        type: string

jobs:
  run:
    runs-on: ubuntu-latest
    concurrency:
      group: ${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}
      cancel-in-progress: false
    if: |
      github.event_name == 'workflow_dispatch' ||
      contains(fromJSON('["OWNER","MEMBER","COLLABORATOR","CONTRIBUTOR"]'), github.event.comment.author_association) ||
      contains(fromJSON('["OWNER","MEMBER","COLLABORATOR","CONTRIBUTOR"]'), github.event.issue.author_association) ||
      contains(fromJSON('["OWNER","MEMBER","COLLABORATOR","CONTRIBUTOR"]'), github.event.pull_request.author_association)
    permissions:
      issues: write
      pull-requests: write
      contents: write
      models: read
    steps:
      - uses: actions/checkout@v4
      - uses: Clause-Logic/exoclaw-github@main
        with:
          trigger: "@exoclawbot"
          tools: >-
            github_pr_diff,
            github_file,
            github_checks,
            github_search,
            github_review,
            github_label,
            github_reaction,
            web_fetch

No API keys required — uses GitHub Models (gpt-4.1-mini) via the built-in GITHUB_TOKEN.

To use Anthropic or OpenAI instead, uncomment model: and add the key as a repo secret:

        with:
          model: claude-sonnet-4-6
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

Inputs

Input Default Description
model github/gpt-4.1-mini LLM model. Use claude-sonnet-4-6 or gpt-4o with the relevant API key secret.
trigger @exoclawbot Word that must appear in a comment to trigger the bot. Empty = respond to all.
tools (none) Comma-separated list of GitHub and web tools to enable (see below).
token_budget 1500000 Per-turn token ceiling. The agent gets progressive warnings and a graceful cutoff as it approaches it, keeping a single run's cost bounded.
respond_to_issues_opened true Respond when an issue is opened.
respond_to_prs_opened false Respond when a PR is opened.

Tools

Workspace tools (read files, write files, run shell commands) are always enabled. GitHub and web tools are opt-in:

Tool What it does
github_pr_diff Fetch the unified diff for a PR
github_file Read any file at any ref
github_checks Read CI check run results
github_search Search issues and code
github_review Submit PR reviews with inline comments
github_label Add, remove, or list labels
github_reaction React to the triggering comment
github_issue Create, update, or close issues (higher-stakes — opt in explicitly)
web_fetch Fetch a URL and return its content as Markdown (e.g. read linked docs or changelogs)
web_search Search the web — requires a web-search capable model/provider (not the default GitHub Models)

Supported events

Event Default behaviour
issues (opened) Always respond
issue_comment (created) Respond if trigger word present
pull_request (opened) Off by default
pull_request_review_comment (created) Respond if trigger word present
workflow_dispatch Always respond

Session state

Sessions are keyed by github:issue:{number} or github:pr:{number}. History is stored on the bot-state branch and restored at the start of each run, so the bot remembers prior exchanges in the same thread. Concurrent runs on the same issue are serialized via the concurrency key.

Ideas

A few things this is well-suited for:

  • PR reviewer — give it github_pr_diff, github_file, and github_review. Tag it on a PR and it reads the diff, checks context in related files, and submits a review with inline comments.
  • Issue triage — auto-label new issues, ask clarifying questions, link to related issues via github_search.
  • CI explainer — tag it on a failing PR and it fetches the check run logs (github_checks), reads the relevant source files, and explains what broke and why.
  • Documentation assistant — ask it questions about the codebase directly in issues. It can read any file and has shell access to run grep, tests, etc.
  • Release notes — trigger via workflow_dispatch with a version number; it searches merged PRs and generates a changelog.
  • Rubber duck — leave a half-formed idea in an issue and let it poke holes, ask questions, or sketch an approach.

About

GitHub Actions channel and tools for exoclaw

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages