| name: "opencode GitHub Action" |
| description: "Run opencode in GitHub Actions workflows" |
| branding: |
| icon: "code" |
| color: "orange" |
|
|
| inputs: |
| model: |
| description: "Model to use" |
| required: true |
|
|
| agent: |
| description: "Agent to use. Must be a primary agent. Falls back to default_agent from config or 'build' if not found." |
| required: false |
|
|
| share: |
| description: "Share the opencode session (defaults to true for public repos)" |
| required: false |
|
|
| prompt: |
| description: "Custom prompt to override the default prompt" |
| required: false |
|
|
| use_github_token: |
| description: "Use GITHUB_TOKEN directly instead of OpenCode App token exchange. When true, skips OIDC and uses the GITHUB_TOKEN env var." |
| required: false |
| default: "false" |
|
|
| mentions: |
| description: "Comma-separated list of trigger phrases (case-insensitive). Defaults to '/opencode,/oc'" |
| required: false |
|
|
| variant: |
| description: "Model variant for provider-specific reasoning effort (e.g., high, max, minimal)" |
| required: false |
|
|
| oidc_base_url: |
| description: "Base URL for OIDC token exchange API. Only required when running a custom GitHub App install. Defaults to https://api.opencode.ai" |
| required: false |
|
|
| runs: |
| using: "composite" |
| steps: |
| - name: Get opencode version |
| id: version |
| shell: bash |
| run: | |
| VERSION=$(curl -sf https://api.github.com/repos/anomalyco/opencode/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d'"' -f4) |
| echo "version=${VERSION:-latest}" >> $GITHUB_OUTPUT |
| |
| - name: Cache opencode |
| id: cache |
| uses: actions/cache@v4 |
| with: |
| path: ~/.opencode/bin |
| key: opencode-${{ runner.os }}-${{ runner.arch }}-${{ steps.version.outputs.version }} |
|
|
| - name: Install opencode |
| if: steps.cache.outputs.cache-hit != 'true' |
| shell: bash |
| run: curl -fsSL https://opencode.ai/install | bash |
|
|
| - name: Add opencode to PATH |
| shell: bash |
| run: echo "$HOME/.opencode/bin" >> $GITHUB_PATH |
|
|
| - name: Run opencode |
| shell: bash |
| id: run_opencode |
| run: opencode github run |
| env: |
| MODEL: ${{ inputs.model }} |
| AGENT: ${{ inputs.agent }} |
| SHARE: ${{ inputs.share }} |
| PROMPT: ${{ inputs.prompt }} |
| USE_GITHUB_TOKEN: ${{ inputs.use_github_token }} |
| MENTIONS: ${{ inputs.mentions }} |
| VARIANT: ${{ inputs.variant }} |
| OIDC_BASE_URL: ${{ inputs.oidc_base_url }} |
|
|