diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 27ba4e18671..47afdfd7d0f 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -1052,7 +1052,12 @@ export namespace Config { }) .optional(), plugin: z.string().array().optional(), - snapshot: z.boolean().optional(), + snapshot: z + .boolean() + .optional() + .describe( + "Enable or disable snapshot tracking. When false, filesystem snapshots are not recorded and undoing or reverting will not undo/redo file changes. Defaults to true.", + ), share: z .enum(["manual", "auto", "disabled"]) .optional() diff --git a/packages/web/src/content/docs/config.mdx b/packages/web/src/content/docs/config.mdx index d2770ee2094..a9c39bd59f3 100644 --- a/packages/web/src/content/docs/config.mdx +++ b/packages/web/src/content/docs/config.mdx @@ -424,6 +424,23 @@ Customize keybinds in `tui.json`. --- +### Snapshot + +OpenCode uses snapshots to track file changes during agent operations, enabling you to undo and revert changes within a session. Snapshots are enabled by default. + +For large repositories or projects with many submodules, the snapshot system can cause slow indexing and significant disk usage as it tracks all changes using an internal git repository. You can disable snapshots using the `snapshot` option. + +```json title="opencode.json" +{ + "$schema": "https://opencode.ai/config.json", + "snapshot": false +} +``` + +Note that disabling snapshots means changes made by the agent cannot be rolled back through the UI. + +--- + ### Autoupdate OpenCode will automatically download any new updates when it starts up. You can disable this with the `autoupdate` option.