aaif-goose/goose · error
Update file not found. Please download the update first.
Error message
Update file not found. Please download the update first.
What it means
Companion guard to the missing-path check: the GitHub fallback stored an update path (extractedPath or downloadPath) but fs.access fails, so the file/directory no longer exists on disk. Thrown before the installer dialog is shown, telling the user the downloaded artifact vanished — typically cleaned by temp-dir policies or deleted manually.
Source
Thrown at ui/desktop/src/utils/autoUpdater.ts:290
ipcMain.handle('install-update', async () => {
if (isUsingGitHubFallback) {
// For GitHub fallback, we need to handle the installation differently
log.info('Installing update from GitHub fallback...');
try {
// Use the stored extracted path if available, otherwise download path
const updatePath = githubUpdateInfo.extractedPath || githubUpdateInfo.downloadPath;
if (!updatePath) {
throw new Error('Update file path not found. Please download the update first.');
}
// Check if the update path exists
try {
await fs.access(updatePath);
} catch {
throw new Error('Update file not found. Please download the update first.');
}
// Improved dialog with clearer instructions
const dialogResult = (await dialog.showMessageBox({
type: 'info',
title: 'Update Ready to Install',
message: `Version ${githubUpdateInfo.latestVersion} is ready to install.`,
detail: `The update has been downloaded and extracted. To complete the installation:\n\n1. Click "Open Folder" to view the new Goose.app\n2. Quit Goose (this app will close)\n3. Drag the new Goose.app to your Applications folder\n4. Replace the existing app when prompted\n\nThe update will be available the next time you launch Goose.`,
buttons: ['Open Folder & Quit', 'Open Folder Only', 'Cancel'],
defaultId: 0,
cancelId: 2,
})) as unknown as { response: number };
if (dialogResult.response === 0) {
trackUpdateInstallInitiated(
githubUpdateInfo.latestVersion || 'unknown',
'github-fallback',
'open_folder_and_quit'View on GitHub (pinned to 3810898a74)
Solutions
- Re-download the update (download-update) to regenerate the artifact, then install immediately
- Check whether the extracted/download directory still exists and isn't on a tmpfs that clears on reboot
- Free disk space if extraction failed silently
- Install soon after downloading rather than much later
Defensive patterns
Strategy: validation
Validate before calling
// Before invoking install, verify artifact still exists:
import { access } from 'fs/promises';
// (main process) expose hasUpdateArtifact() IPC:
await access(githubUpdateInfo.extractedPath || githubUpdateInfo.downloadPath!); Type guard
const updateArtifactExists = async (): Promise<boolean> => {
const p = githubUpdateInfo.extractedPath || githubUpdateInfo.downloadPath;
if (!p) return false;
try { await fs.access(p); return true; } catch { return false; }
}; Try / catch
try {
await window.api.installUpdate();
} catch (e) {
if (String(e).includes('Update file not found')) {
await window.api.downloadUpdate(); // regenerate, then install
await window.api.installUpdate();
}
} Prevention
- Download updates to a stable app-cache dir, not OS temp that clears on reboot
- Install immediately after download completes
- Re-validate artifact existence on app focus if install was deferred
When it happens
Trigger: OS temp cleanup removed the downloaded update between download and install; user or a cleaning tool deleted the file; app restarted mid-flow so the path pointed into a purged temp dir; disk full or permissions changed.
Common situations: Downloads left in /tmp or cache dirs that are vacuumed on schedule; long gaps between 'Update available' and clicking Install; enterprise disk-cleanup agents.
Related errors
- Update file path not found. Please download the update first
- Auto-updater not initialized. Please restart the application
- GitHub API returned ${response.status}: ${response.statusTex
- Update Available but no download URL found for platform: ${p
- Download failed: ${response.status} ${response.statusText}
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/b016201a827be138.
Report an issue: GitHub.