Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fcf0ddf
Add experimental drive-memory support
Copilot Aug 21, 2026
526df4a
Fix drive permission and action pin tests
Copilot Aug 21, 2026
d8505eb
Complete experimental drive-memory safeguards
Copilot Aug 22, 2026
d07cb8b
docs(adr): add draft ADR-54662 for drive-backed workflow memory
github-actions[bot] Aug 22, 2026
50e5a7e
Avoid recommending experimental drive-memory
Copilot Aug 22, 2026
dfb0ac9
Fix drive-memory validation and schemas
Copilot Aug 22, 2026
ebe5b09
Plan smoke drive workflow
Copilot Aug 22, 2026
137732f
Add smoke drive workflow
Copilot Aug 22, 2026
592ed89
Remove duplicate AWF config write
Copilot Aug 22, 2026
db4821b
Plan branch refresh verification
Copilot Aug 22, 2026
c11408a
Fix drive memory runtime integration
Copilot Aug 22, 2026
27d5ae3
Resolve pending merge conflicts
Copilot Aug 22, 2026
cd9a446
Preserve drives permission schema
Copilot Aug 22, 2026
1740248
Regenerate smoke drive command metadata
Copilot Aug 22, 2026
de1ad80
Inspect renewed merge conflicts
Copilot Aug 22, 2026
4db3bc8
Restore drive conflict resolution
Copilot Aug 22, 2026
e62a224
Plan merge conflict resolution
Copilot Aug 22, 2026
8d2fb14
Merge main into drive memory branch
Copilot Aug 22, 2026
d5d6a27
Plan merge conflict resolution
Copilot Aug 22, 2026
c199609
Merge remote-tracking branch 'origin/main' into copilot/add-drive-mem…
Copilot Aug 22, 2026
b4a0821
Restore drives permission schema after merge
Copilot Aug 22, 2026
0871b1b
Plan refreshed merge verification
Copilot Aug 22, 2026
7f529d8
Restore drive schema after branch refresh
Copilot Aug 22, 2026
a4a6ccb
Merge branch 'main' into copilot/add-drive-memory-support
github-actions[bot] Aug 22, 2026
74e8f5d
Plan shallow-checkout impacted tests
Copilot Aug 22, 2026
6b03557
Fix impacted tests for shallow checkout
Copilot Aug 22, 2026
2de3f5c
Restore drives schema after refresh
Copilot Aug 22, 2026
bfb32b2
Plan branch refresh and final verification
Copilot Aug 22, 2026
f45ee3c
Restore drive permission schema
Copilot Aug 22, 2026
9f607da
Begin PR finalization
Copilot Aug 22, 2026
8227d2a
Restore drives workflow permission schema
Copilot Aug 22, 2026
7e76aaf
Plan PR finalization
Copilot Aug 22, 2026
f56d4a4
Revert "Plan PR finalization"
Copilot Aug 22, 2026
502f6b0
Plan standalone drive mount fix
Copilot Aug 22, 2026
b93135b
Revert "Plan standalone drive mount fix"
Copilot Aug 22, 2026
79f32a8
Begin PR triage
Copilot Aug 22, 2026
b165914
Fix drive permission schema validation
Copilot Aug 22, 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
10 changes: 10 additions & 0 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@
"version": "v8.0.1",
"sha": "3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c"
},
"actions/gh-drives-preview/checkout@main": {
"repo": "actions/gh-drives-preview/checkout",
"version": "main",
"sha": "c9163b96f9720dc55e0de19b37028ae22dcfa42a"
},
"actions/gh-drives-preview/commit@main": {
"repo": "actions/gh-drives-preview/commit",
"version": "main",
"sha": "c9163b96f9720dc55e0de19b37028ae22dcfa42a"
},
"actions/github-script@v9.0.0": {
"repo": "actions/github-script",
"version": "v9.0.0",
Expand Down
2 changes: 1 addition & 1 deletion actions/setup/js/validate_memory_step.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const { validateMemoryFiles } = require("./validate_memory_files.cjs");
/**
* @param {{ error: (message: string) => void, info: (message: string) => void, setFailed: (message: string) => void }} core
* @param {{
* kind: "repo" | "cache",
* kind: "repo" | "cache" | "drive",
* formatJSON?: boolean,
* requireValidationScript?: boolean,
* writeMarker?: boolean,
Expand Down
73 changes: 73 additions & 0 deletions docs/src/content/docs/reference/drive-memory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: Drive Memory
description: Experimental persistent workflow memory backed by GitHub Drives.
sidebar:
order: 1510
---

Drive memory provides persistent file storage across workflow runs using the experimental [GitHub Drives preview](https://github.com/actions/gh-drives-preview). The repository must be enrolled in the preview, and the workflow must run on a Linux runner with FUSE support.

> [!CAUTION]
> Drive memory and the underlying GitHub Drives service are experimental. The configuration and storage behavior may change without notice.

## Enable drive memory

```aw wrap
---
tools:
drive-memory: true
---
```

The compiler mounts the `default` drive and exposes it to the agent at `/tmp/gh-aw/drive-memory/`. It automatically grants the generated job `contents: read`, `id-token: write`, and the required `drives` permission.

## Configure a drive

```aw wrap
---
tools:
drive-memory:
drive-name: agent-memory
disk-size: 20G
prefetch: true
description: Long-lived notes and state
allowed-extensions: [".json", ".jsonl", ".txt", ".md"]
---
```

- `drive-name` selects the persistent drive. It defaults to `default`.
- `disk-size` sets the size when the drive is first created and defaults to `10G`.
- `prefetch` eagerly downloads existing content after mounting.
- `restore-only` mounts with `drives: read` and never commits local changes.
- `description`, `allowed-extensions`, and `validation` behave like their [cache-memory](/gh-aw/reference/cache-memory/) equivalents.

## Multiple drives

```aw wrap
---
tools:
drive-memory:
- id: notes
drive-name: agent-notes
- id: reference
drive-name: shared-reference
restore-only: true
prefetch: true
---
```

The `default` entry is exposed at `/tmp/gh-aw/drive-memory/`; named entries use `/tmp/gh-aw/drive-memory-{id}/`.

## Persistence and threat detection

Without threat detection, the compiler checks out each drive before the agent and commits validated changes afterward. With threat detection enabled, the agent receives a non-publishing checkout and the compiler stages drive contents as an artifact. A separate `update_drive_memory` job publishes the artifact only after detection succeeds. Before replacing the drive, that job verifies it has not changed since the agent checked it out; concurrent updates cause the publish to fail instead of being overwritten.

Drive names are repository-wide and branch-aware according to the preview service. GitHub Drives allows one active writer for a drive, so overlapping runs that write the same drive can contend for the writer lease.

## Limitations

- GitHub-hosted `ubuntu-latest` is the supported preview runner.
- Repositories must be enrolled in the GitHub Drives preview.
- Drive mounts are not supported inside job containers.
- The upstream actions currently have no versioned release, so gh-aw pins the preview `main` commit.
- Do not store secrets in drive memory.
Loading
Loading