Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
f24251f
sync
fwang Jan 13, 2026
8ae10f1
sync
fwang Jan 13, 2026
b7a1d8f
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 13, 2026
f3d4dd5
Update aarch64-darwin hash
actions-user Jan 13, 2026
bee4b68
fix(TUI): make tui work when OPENCODE_SERVER_PASSWORD is set (#8179)
LeonMueller-OneAndOnly Jan 13, 2026
7aa7dd3
chore: generate
actions-user Jan 13, 2026
eaf18d9
wip: black
fwang Jan 13, 2026
2f7b2cf
docs: Update plan mode restrictions (#8290)
Eduard-Voiculescu Jan 13, 2026
b8828f2
docs: add 302ai provider (#8142)
mthezi Jan 13, 2026
73d5cac
fix: add missing metadata() and ask() defintions to ToolContext type …
danielmbrasil Jan 13, 2026
1ff46c7
fix(tui): track all timeouts in Footer to prevent memory leak (#8255)
sauerdaniel Jan 14, 2026
562f067
fix: deduplicate file refs in sent prompts (#8303)
felixzsh Jan 14, 2026
f242541
chore: generate
actions-user Jan 14, 2026
45fa4ed
wip: black
fwang Jan 14, 2026
82319bb
wip: black
fwang Jan 14, 2026
aa522aa
release: v1.1.17
Jan 13, 2026
4368053
add fullscreen view to permission prompt
thdxr Jan 13, 2026
15e80fc
chore: generate
actions-user Jan 13, 2026
a761f66
fix(desktop): correct health check endpoint URL to /global/health (#8…
usvimal Jan 13, 2026
3c9d80d
feat(desktop): Adding Provider Icons (#8215)
dbpolito Jan 13, 2026
fcaa041
chore: generate
actions-user Jan 13, 2026
bc557e8
console: reduce desktop download cache ttl to 5 minutes
Brendonovich Jan 13, 2026
5b699a0
fix(github): add persist-credentials: false to workflow templates (#8…
LeonMueller-OneAndOnly Jan 13, 2026
c67b0a9
release: v1.1.18
Jan 13, 2026
dc654c9
fix(desktop): Revert provider icon on select model dialog (#8245)
dbpolito Jan 13, 2026
e37104c
feat: add Undertale and Deltarune built-in themes (#8240)
cmdr-chara Jan 13, 2026
f642a6c
chore: generate
actions-user Jan 13, 2026
dfa59dd
feat(desktop): Ask Question Tool Support (#8232)
dbpolito Jan 13, 2026
4dc7266
fix(mcp): close existing client before reassignment to prevent leaks …
sauerdaniel Jan 13, 2026
9b76337
fix(state): delete key from recordsByKey on instance disposal (#8252)
sauerdaniel Jan 13, 2026
a184714
docs: document ~/.claude/CLAUDE.md compatibility behavior (#8268)
zeke Jan 13, 2026
a520c4f
feat: Add GitLab Duo Agentic Chat Provider Support (#7333)
vglafirov Jan 13, 2026
0ddf8e6
fix(cli): mcp auth duplicate radio button icon (#8273)
dmmulroy Jan 13, 2026
d831432
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 13, 2026
d99d131
Update aarch64-darwin hash
actions-user Jan 13, 2026
7599396
tweak: ensure external dir and bash tool invocations render workdir d…
rekram1-node Jan 13, 2026
4eb6b57
tweak: external dir permission rendering in tui
rekram1-node Jan 13, 2026
16b2bfa
add family to gpt 5.2 codex in codex plugin
rekram1-node Jan 13, 2026
1fccb3b
fix(prompt-input): handle Shift+Enter before IME check to prevent stu…
josephbharrison Jan 13, 2026
3997d3f
feat: add plan mode with enter/exit tools (#8281)
thdxr Jan 13, 2026
29703ae
chore: generate
actions-user Jan 13, 2026
cd6e073
test: fix plan agent test path from .opencode/plan/* to .opencode/pla…
thdxr Jan 13, 2026
4c37e17
remove plan
thdxr Jan 13, 2026
73adf7e
fix: update User-Agent string to latest Chrome version in webfetch (#…
AlanThiec Jan 13, 2026
905226c
fix: Add Plugin Mocks to Provider Tests (#8276)
vglafirov Jan 13, 2026
874e22a
chore: generate
actions-user Jan 13, 2026
bcdaf7e
tweak: prompt for explore agent better
rekram1-node Jan 13, 2026
0026bc5
do not allow agent to ask custom-less questions
thdxr Jan 13, 2026
16d516d
release: v1.1.19
Jan 13, 2026
90eaf9b
fix(TUI): make tui work when OPENCODE_SERVER_PASSWORD is set (#8179)
LeonMueller-OneAndOnly Jan 13, 2026
a160a35
chore: generate
actions-user Jan 13, 2026
f4a28b2
docs: Update plan mode restrictions (#8290)
Eduard-Voiculescu Jan 13, 2026
adcc661
docs: add 302ai provider (#8142)
mthezi Jan 13, 2026
86900d7
fix: add missing metadata() and ask() defintions to ToolContext type …
danielmbrasil Jan 13, 2026
8917dfd
fix(tui): track all timeouts in Footer to prevent memory leak (#8255)
sauerdaniel Jan 14, 2026
e2ac588
fix: deduplicate file refs in sent prompts (#8303)
felixzsh Jan 14, 2026
2aed4d2
chore: generate
actions-user Jan 14, 2026
6fe265e
Merge branch 'zen-black' into dev
fwang Jan 14, 2026
3839d70
chore: generate
actions-user Jan 14, 2026
9b2d595
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 14, 2026
ff669d4
Update aarch64-darwin hash
actions-user Jan 14, 2026
f9fcdea
fix(session): skip duplicate system prompt for Codex OAuth sessions (…
zerone0x Jan 14, 2026
a57c866
feat: show connected providers in /connect dialog (#8351)
AksharP5 Jan 14, 2026
45a770c
fix(opencode): fix docker image after sst rename in tips (#8376)
goniz Jan 14, 2026
76b10d8
chore: generate
actions-user Jan 14, 2026
4347a77
ignore: update download stats 2026-01-14
actions-user Jan 14, 2026
ee6ca10
fix(app): file listing (#8309)
neriousy Jan 14, 2026
fcc561e
fix plan mode when not in git worktree
thdxr Jan 14, 2026
05cbb11
fix(ui): layout-bottom icons (#8330)
ajzbc Jan 14, 2026
077ca44
fix(desktop): "load more" button behavior in desktop sidebar (#8430)
shanebishop1 Jan 14, 2026
2256362
chore: generate
actions-user Jan 14, 2026
09ff3b9
release: v1.1.20
Jan 14, 2026
b2b123a
feat(tui): improve question prompt UX (#8339)
kitlangton Jan 14, 2026
bb3926b
fix(homepage): Update FAQ to include desktop and web links (#8453)
R44VC0RP Jan 14, 2026
9fd61ae
chore: generate
actions-user Jan 14, 2026
6e13e2f
fix(session): remove typo'd duplicate path import (#8408) (#8412)
CasualDeveloper Jan 14, 2026
0ce849c
chore: update gitlab-ai-provider to 3.1.1 and remove unused parameter…
vglafirov Jan 14, 2026
cc67bc0
Update Nix flake.lock and x86_64-linux hash
actions-user Jan 14, 2026
b75d4d1
docs: update screenshot images (#8479)
R44VC0RP Jan 14, 2026
ad17e8d
feat: add choco and scoop to opencode upgrade methods (#8439)
itsrainingmani Jan 14, 2026
b5e9f96
Update aarch64-darwin hash
actions-user Jan 14, 2026
78be8fe
feat(console): add /changelog page (#8476)
R44VC0RP Jan 14, 2026
8ce5c2b
feat(console/app): Style changes, view transitions, small improvement…
aaroniker Jan 14, 2026
e6e7eaf
docs: add Web usage page (#8482)
R44VC0RP Jan 14, 2026
9d92ae7
copy changes
thdxr Jan 14, 2026
3a9e6b5
feat(opencode): add AWS Web Identity Token File support for Bedrock (…
bainos Jan 14, 2026
44d24d4
ignore: fix auth redirect to preserve selected plan during subscripti…
thdxr Jan 14, 2026
5b431c3
ignore: remove nowrap constraint to allow text wrapping in console UI
thdxr Jan 14, 2026
346c5e0
fix(console): make logo on /black link back to homepage (#8498)
R44VC0RP Jan 14, 2026
3206ed4
feat(console): add OG image and SEO meta tags for /black page (#8506)
R44VC0RP Jan 14, 2026
c0b43d3
ignore: add slash command to checks ai sdk deps
rekram1-node Jan 14, 2026
d83756e
chore: generate
actions-user Jan 14, 2026
1f86aa8
fix: adjust gitlab logic in provider.ts
rekram1-node Jan 14, 2026
50dfa9c
chore: upgrade bun from 1.3.5 -> 1.3.6, also update types/bun from 1.…
rekram1-node Jan 14, 2026
7d3c7a9
add check incase provider doesnt exist in models list
rekram1-node Jan 14, 2026
4d08123
feat(install): respect ZDOTDIR for zsh config detection (#8511)
samiulsami Jan 14, 2026
b3ae193
fix: plan path permissions
rekram1-node Jan 14, 2026
207a59a
docs: add comprehensive security threat model and architecture docume…
thdxr Jan 14, 2026
6b6d6e9
update security
thdxr Jan 14, 2026
87438fb
ci: dedup stuff in changelog (#8522)
opencode-agent[bot] Jan 14, 2026
9e4438f
wip: black
fwang Jan 14, 2026
bbb3120
zen: gpt-5.2-codex
fwang Jan 14, 2026
096e14d
tweak: adjust lsp wording a bit more to encourage fixing
rekram1-node Jan 14, 2026
18f4216
fix: skip system prompt for claude
shuv1337 Jan 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .opencode/command/ai-deps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
description: "Bump AI sdk dependencies minor / patch versions only"
---

Please read @package.json and @packages/opencode/package.json.

Your job is to look into AI SDK dependencies, figure out if they have versions that can be upgraded (minor or patch versions ONLY no major ignore major changes).

I want a report of every dependency and the version that can be upgraded to.
What would be even better is if you can give me links to the changelog for each dependency, or at least some reference info so I can see what bugs were fixed or new features were added.

Consider using subagents for each dep to save your context window.

Here is a short list of some deps (please be comprehensive tho):

- "ai"
- "@ai-sdk/openai"
- "@ai-sdk/anthropic"
- "@openrouter/ai-sdk-provider"
- etc, etc

DO NOT upgrade the dependencies yet, just make a list of all dependencies and their versions that can be upgraded to minor or patch versions only.

Write up your findings to ai-sdk-updates.md
29 changes: 29 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
# Security

## Threat Model

### Overview

OpenCode is an AI-powered coding assistant that runs locally on your machine. It provides an agent system with access to powerful tools including shell execution, file operations, and web access.

### No Sandbox

OpenCode does **not** sandbox the agent. The permission system exists as a UX feature to help users stay aware of what actions the agent is taking - it prompts for confirmation before executing commands, writing files, etc. However, it is not designed to provide security isolation.

If you need true isolation, run OpenCode inside a Docker container or VM.

### Server Mode

Server mode is opt-in only. When enabled, set `OPENCODE_SERVER_PASSWORD` to require HTTP Basic Auth. Without this, the server runs unauthenticated (with a warning). It is the end user's responsibility to secure the server - any functionality it provides is not a vulnerability.

### Out of Scope

| Category | Rationale |
| ------------------------------- | ----------------------------------------------------------------------- |
| **Server access when opted-in** | If you enable server mode, API access is expected behavior |
| **Sandbox escapes** | The permission system is not a sandbox (see above) |
| **LLM provider data handling** | Data sent to your configured LLM provider is governed by their policies |
| **MCP server behavior** | External MCP servers you configure are outside our trust boundary |

---

# Reporting Security Issues

We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
Expand Down
1 change: 1 addition & 0 deletions STATS.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,4 @@
| 2026-01-11 | 2,836,394 (+204,371) | 1,530,479 (+26,809) | 4,366,873 (+231,180) |
| 2026-01-12 | 3,053,594 (+217,200) | 1,553,671 (+23,192) | 4,607,265 (+240,392) |
| 2026-01-13 | 3,297,078 (+243,484) | 1,595,062 (+41,391) | 4,892,140 (+284,875) |
| 2026-01-14 | 3,568,928 (+271,850) | 1,645,362 (+50,300) | 5,214,290 (+322,150) |
46 changes: 26 additions & 20 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions infra/console.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ const ZEN_MODELS = [
]
const ZEN_BLACK = new sst.Secret("ZEN_BLACK")
const STRIPE_SECRET_KEY = new sst.Secret("STRIPE_SECRET_KEY")
const STRIPE_PUBLISHABLE_KEY = new sst.Secret("STRIPE_PUBLISHABLE_KEY")
const AUTH_API_URL = new sst.Linkable("AUTH_API_URL", {
properties: { value: auth.url.apply((url) => url!) },
})
Expand Down Expand Up @@ -177,6 +178,7 @@ new sst.cloudflare.x.SolidStart("Console", {
//VITE_DOCS_URL: web.url.apply((url) => url!),
//VITE_API_URL: gateway.url.apply((url) => url!),
VITE_AUTH_URL: auth.url.apply((url) => url!),
VITE_STRIPE_PUBLISHABLE_KEY: STRIPE_PUBLISHABLE_KEY.value,
},
transform: {
server: {
Expand Down
2 changes: 1 addition & 1 deletion install
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ case $current_shell in
config_files="$HOME/.config/fish/config.fish"
;;
zsh)
config_files="$HOME/.zshrc $HOME/.zshenv $XDG_CONFIG_HOME/zsh/.zshrc $XDG_CONFIG_HOME/zsh/.zshenv"
config_files="${ZDOTDIR:-$HOME}/.zshrc ${ZDOTDIR:-$HOME}/.zshenv $XDG_CONFIG_HOME/zsh/.zshrc $XDG_CONFIG_HOME/zsh/.zshenv"
;;
bash)
config_files="$HOME/.bashrc $HOME/.bash_profile $HOME/.profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile"
Expand Down
4 changes: 2 additions & 2 deletions nix/hashes.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"nodeModules": {
"x86_64-linux": "sha256-x6A/XT1i3bjakfAj0A1wV4n2s9rpflMDceTeppdP6tE=",
"aarch64-darwin": "sha256-RkamQYbpjJqpHHf76em9lPgeI9k4/kaCf7T+4xHaizY="
"x86_64-linux": "sha256-GKdu7nan/9ioBtgL3cUeuVLNKUDio10LeQrn7BPgbng=",
"aarch64-darwin": "sha256-STLB1J65VjauvPM+BqCyTQQkHPoVmUhDvVEdH3WTJP4="
}
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "AI-powered development tool",
"private": true,
"type": "module",
"packageManager": "[email protected].5",
"packageManager": "[email protected].6",
"scripts": {
"dev": "bun run --cwd packages/opencode --conditions=browser src/index.ts",
"typecheck": "bun turbo typecheck",
Expand All @@ -21,7 +21,7 @@
"packages/slack"
],
"catalog": {
"@types/bun": "1.3.4",
"@types/bun": "1.3.6",
"@octokit/rest": "22.0.0",
"@hono/zod-validator": "0.4.2",
"ulid": "3.0.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "1.1.19",
"version": "1.1.20",
"description": "",
"type": "module",
"exports": {
Expand Down
12 changes: 9 additions & 3 deletions packages/app/src/context/global-sync.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ type State = {
config: Config
path: Path
session: Session[]
sessionTotal: number
session_status: {
[sessionID: string]: SessionStatus
}
Expand Down Expand Up @@ -98,6 +99,7 @@ function createGlobalSync() {
agent: [],
command: [],
session: [],
sessionTotal: 0,
session_status: {},
session_diff: {},
todo: {},
Expand All @@ -117,8 +119,10 @@ function createGlobalSync() {

async function loadSessions(directory: string) {
const [store, setStore] = child(directory)
globalSDK.client.session
.list({ directory })
const limit = store.limit

return globalSDK.client.session
.list({ directory, roots: true })
.then((x) => {
const fourHoursAgo = Date.now() - 4 * 60 * 60 * 1000
const nonArchived = (x.data ?? [])
Expand All @@ -128,10 +132,12 @@ function createGlobalSync() {
.sort((a, b) => a.id.localeCompare(b.id))
// Include up to the limit, plus any updated in the last 4 hours
const sessions = nonArchived.filter((s, i) => {
if (i < store.limit) return true
if (i < limit) return true
const updated = new Date(s.time?.updated ?? s.time?.created).getTime()
return updated > fourHoursAgo
})
// Store total session count (used for "load more" pagination)
setStore("sessionTotal", nonArchived.length)
setStore("session", reconcile(sessions, { key: "id" }))
})
.catch((err) => {
Expand Down
Loading