commit 7b2ad6a1abf88e0731f15bbf6e281b29a610dd76
Merge: 74c85391 847a63e1
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 15:31:54 2025 +0800
Merge branch 'dev' into github
commit 74c85391b576d01df298f6c30e3399b281b5c997
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 15:30:14 2025 +0800
sync
commit 0d27f8e490f1aa242e1a3fcd1f21eb077f852207
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 14:30:57 2025 +0800
sync
commit 0cf7e6c89f173b053f37cc0d316011b3e9d5fcc4
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 11:54:57 2025 +0800
sync
commit a782cb7a268bf98916c3850083eaf44ebc38de05
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 11:53:25 2025 +0800
sync
commit aa557014584abaf462656ba9b1de7c8bd6e9b9d8
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 11:48:10 2025 +0800
sync
commit 73c8150479bd3c965087c634102df047a36b40ab
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 01:29:29 2025 +0800
sync
commit c5325134e80ce3f9e2cb88e5a51893e4ffd880c2
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 01:07:48 2025 +0800
sync
commit c5b646aa88760731ac9cd221f677bd400c31224b
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 01:02:02 2025 +0800
sync
commit 27f7cc86ab4713a26d316ae71d2aa5978aaa2007
Author: Frank <frank@sst.dev>
Date: Mon Aug 18 00:59:22 2025 +0800
sync
commit 0a6152a0e0c2bb0e5b7cafbcb92b908433dd6c5b
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 18:11:31 2025 +0800
fix /opencode trigger
commit f1089103c607ac11251cac5e032e62c8b4667b30
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 17:55:14 2025 +0800
sync
commit 3ad18240248301380a68880315bfa83c18e9652d
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 17:44:11 2025 +0800
sync
commit 24f0f81773762a38ba0a26e599b718495e2f4b54
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 17:18:22 2025 +0800
sync
commit bc199d32bed9679d2f80ade527fa57a91e0883ca
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 16:59:03 2025 +0800
sync
commit 6cf860be843e94401166a6de83e36d6bdd8ca6d7
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 16:54:48 2025 +0800
sync
commit f5f753ff38498062b2e3de38a1be94158fce1463
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 14:43:12 2025 +0800
sync
commit 26d2e23a3ee99141a5951a153e444a1be25548dc
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 14:33:40 2025 +0800
sync
commit c5b3f54a0ae6064ff51c11ade41e21b594939715
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 14:16:10 2025 +0800
sync
commit 1c74e9a7ad35551eea53d0e51dcd28e6ae30a944
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 08:17:53 2025 +0800
sync
commit 89052dc9aaf7e4f02b7ca869ef6017322ee21c94
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 08:12:43 2025 +0800
sync
commit 42931d4d2a942eedef44f5570a57bf84df26ecfa
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 08:08:37 2025 +0800
sync
commit f22e97dd051ae3f592f4258a8d0270ca7fd60338
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 08:01:57 2025 +0800
sync
commit 2dda422ef85d2308b459cebe7f202b7fb782e75e
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 07:55:38 2025 +0800
sync
commit b8be1d0e9e89732bd60185c724cda72b8de5f145
Author: Frank <frank@sst.dev>
Date: Sun Aug 17 07:48:18 2025 +0800
sync
commit 78c84b96a3c8aa78e0ffa089a2a72ad80348fe72
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 20:49:26 2025 +0800
sync
commit dd9c0c83090ea6c5da963303227a1e09a8434994
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 20:47:25 2025 +0800
sync
commit 5eb917abba182712d1581376e95de45a092bbb24
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 20:35:48 2025 +0800
sync
commit 43cf83e7ccbc99484602b06cbb6aafdbc63bf11c
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 20:32:49 2025 +0800
sync
commit 10673ca3d2e1572e15c944ddd7d7af8175971f74
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 19:55:53 2025 +0800
sync
commit c45ae8a233ed64c49a08b98f3ad01e0348b2df22
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 19:53:52 2025 +0800
sync
commit 3c329dee05ecda95f5d249552aafc885997f07f2
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 19:49:56 2025 +0800
sync
commit 5797048db864142f15d73c854131a77a31a421ee
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 18:00:04 2025 +0800
sync
commit 2741338e8a27e57d9d023cf9c0a6a05276b82f41
Author: Frank <frank@sst.dev>
Date: Sat Aug 16 17:54:42 2025 +0800
sync
commit a51a8ca6d094bd5f98330c730d335285688c6ed8
Author: Frank <frank@sst.dev>
Date: Fri Aug 15 18:59:29 2025 +0800
sync
commit f4eeeb612dfa6f1714a954dd167519ade0c36a2d
Author: Frank <frank@sst.dev>
Date: Fri Aug 15 18:56:35 2025 +0800
sync
commit 1d0509c5630904a5a9e89ce0de09fbebb6f711be
Author: Frank <frank@sst.dev>
Date: Fri Aug 15 18:54:21 2025 +0800
sync
commit 339807d1b88d2439e9543b5da4ca2538a49f4ab8
Author: Frank <frank@sst.dev>
Date: Fri Aug 15 18:49:22 2025 +0800
sync
commit 70b4b78922fe80424d8922bb999ed84d28dff005
Author: Frank <frank@sst.dev>
Date: Fri Aug 15 18:04:57 2025 +0800
sync
4.6 KiB
opencode GitHub Action
A GitHub Action that integrates opencode directly into your GitHub workflow.
Mention /opencode in your comment, and opencode will execute tasks within your GitHub Actions runner.
Features
Explain an issues
Leave the following comment on a GitHub issue. opencode will read the entire thread, including all comments, and reply with a clear explanation.
/opencode explain this issue
Fix an issues
Leave the following comment on a GitHub issue. opencode will create a new branch, implement the changes, and open a PR with the changes.
/opencode fix this
Review PRs and make changes
Leave the following comment on a GitHub PR. opencode will implement the requested change and commit it to the same PR.
Delete the attachment from S3 when the note is removed /oc
Installation
Run the following command in the terminal from your GitHub repo:
opencode github install
This will walk you through installing the GitHub app, creating the workflow, and setting up secrets.
Manual Setup
-
Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository.
-
Add the following workflow file to
.github/workflows/opencode.ymlin your repo. Set the appropriatemodeland required API keys inenv.name: opencode on: issue_comment: types: [created] jobs: opencode: if: | contains(github.event.comment.body, '/oc') || contains(github.event.comment.body, '/opencode') runs-on: ubuntu-latest permissions: id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run opencode uses: sst/opencode/github@latest env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} with: model: anthropic/claude-sonnet-4-20250514 -
Store the API keys in secrets. In your organization or project settings, expand Secrets and variables on the left and select Actions. Add the required API keys.
Support
This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/sst/opencode/issues.
Development
To test locally:
-
Navigate to a test repo (e.g.
hello-world):cd hello-world -
Run:
MODEL=anthropic/claude-sonnet-4-20250514 \ ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \ GITHUB_RUN_ID=dummy \ MOCK_TOKEN=github_pat_1234567890 \ MOCK_EVENT='{"eventName":"issue_comment",...}' \ bun /path/to/opencode/github/index.tsMODEL: The model used by opencode. Same as theMODELdefined in the GitHub workflow.ANTHROPIC_API_KEY: Your model provider API key. Same as the keys defined in the GitHub workflow.GITHUB_RUN_ID: Dummy value to emulate GitHub action environment.MOCK_TOKEN: A GitHub persontal access token. This token is used to verify you haveadminorwriteaccess to the test repo. Generate a token here.MOCK_EVENT: Mock GitHub event payload (see templates below)./path/to/opencode: Path to your cloned opencode repo.bun /path/to/opencode/github/index.tsruns your local version ofopencode.
Issue comment event
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'
Replace:
"owner":"sst"with repo owner"repo":"hello-world"with repo name"actor":"fwang"with the GitHub username of commentor"number":4with the GitHub issue id"body":"hey opencode, summarize thread"with comment body
Issue comment with image attachment.
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image "}}}'
Replace the image URL https://github.com/user-attachments/assets/xxxxxxxx with a valid GitHub attachment (you can generate one by commenting with an image in any issue).
PR comment event
MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'