Skip to main content
Mesa uses a .mesaignore file to decide which files stay in local ephemeral storage and which are uploaded to your repository. Files matching .mesaignore patterns are never uploaded — no blob upload, no tree mutation, no ref update. They behave like normal files while the daemon is running but disappear on restart. This is useful for editor scratch files (swap files, lock files), OS metadata (.DS_Store), and other files that should never be committed.

How it works

When the mesa daemon starts, it reads a single .mesaignore file and compiles the patterns into a matcher. Every file write is checked against these patterns:
  • Match → file is routed to ephemeral storage (local only, lost on restart)
  • No match → file is uploaded to VCS (persisted in the repository)
The .mesaignore file uses gitignore syntax — the same pattern format you already know from .gitignore.

File location

Point Mesa at a .mesaignore file with the MESA_MESAIGNORE_PATH environment variable:
If MESA_MESAIGNORE_PATH is not set, Mesa uses its built-in default rules. (A .mesaignore next to a legacy config.toml is still picked up, but that implicit lookup is deprecated along with config files.)

Customizing

Edit the file directly:
Changes take effect on the next daemon restart (mesa mount). The file is the sole source of ignore rules — there are no hidden defaults layered underneath. If you remove a pattern, that file type will be uploaded to VCS.
The .mesaignore applies globally to all repositories mounted through mesa. For per-repo ignore rules, use the standard .gitignore inside each repository.

Resetting to defaults

To restore the default patterns:

Viewing current rules

To see what patterns are active:
To see the built-in defaults (useful for diffing against your customizations):

Safety guard

The pattern !.mesaignore is always enforced by the daemon, even if you remove it from your file. This prevents you from accidentally ignoring your own configuration file.

Fallback behavior

If no .mesaignore file exists on disk, the daemon falls back to compiled-in defaults (the same patterns written on first run). To operate with no ignore rules, create an empty .mesaignore file.