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 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 }} OIDC_BASE_URL: ${{ inputs.oidc_base_url }}