Overview
Mullvad VPN uses various directories across your system for storing settings, logs, cache data, and runtime files. This guide documents all file paths used by the application.All directory paths are defined in the
mullvad-paths crate and can be customized using environment variables.Daemon Paths
Settings Directory
Stores the daemon’s configuration files and persistent settings.| Platform | Default Path |
|---|---|
| Linux | /etc/mullvad-vpn/ |
| macOS | /etc/mullvad-vpn/ |
| Windows | %LOCALAPPDATA%\Mullvad VPN\ |
| Android | getFilesDir() |
On Windows, when running as a system service,
%LOCALAPPDATA% expands to:
C:\Windows\system32\config\systemprofile\AppData\LocalMULLVAD_SETTINGS_DIR
Log Directory
Stores daemon and application log files.| Platform | Default Path |
|---|---|
| Linux | /var/log/mullvad-vpn/ (+ systemd) |
| macOS | /var/log/mullvad-vpn/ |
| Windows | C:\ProgramData\Mullvad VPN\ |
| Android | getFilesDir() |
MULLVAD_LOG_DIR
On Linux, logs are also available through systemd:
Cache Directory
Stores temporary data such as relay lists and account information.| Platform | Default Path |
|---|---|
| Linux | /var/cache/mullvad-vpn/ |
| macOS | /Library/Caches/mullvad-vpn/ |
| Windows | C:\ProgramData\Mullvad VPN\cache |
| Android | getCacheDir() |
MULLVAD_CACHE_DIR
RPC Socket Path
The management interface socket used by the CLI and GUI to communicate with the daemon.| Platform | Default Path |
|---|---|
| Linux | /var/run/mullvad-vpn |
| macOS | /var/run/mullvad-vpn |
| Windows | //./pipe/Mullvad VPN |
| Android | getNoBackupFilesDir() |
MULLVAD_RPC_SOCKET_PATH
On Windows, the RPC socket uses a named pipe instead of a Unix socket.
Desktop Application Paths
The Electron-based GUI application stores user-specific settings separately from the daemon.GUI Settings File
Stores GUI preferences and window state.| Platform | Path |
|---|---|
| Linux | $XDG_CONFIG_HOME/Mullvad VPN/gui_settings.json |
| macOS | ~/Library/Application Support/Mullvad VPN/gui_settings.json |
| Windows | %LOCALAPPDATA%\Mullvad VPN\gui_settings.json |
| Android | Available in logcat |
On Linux, if
$XDG_CONFIG_HOME is not set, it defaults to ~/.config.desktop/packages/mullvad-vpn/src/main/gui-settings.ts
Path Hierarchy
Linux
macOS
Windows
Permissions
Unix Systems (Linux/macOS)
The daemon creates directories with specific permissions to ensure security:- Settings directory: Root-owned, mode
0700(owner read/write/execute only) - Log directory: Root-owned, readable by all users for transparency
- Cache directory: Root-owned, readable and executable by all users
- RPC socket: Accessible by all users by default (can be restricted with
MULLVAD_MANAGEMENT_SOCKET_GROUP)
Windows
On Windows, the daemon sets ACLs (Access Control Lists) to ensure:- Administrators: Full access to all directories
- Authenticated Users: Read-only access to appropriate directories
- SYSTEM: Full access as the service runs under the SYSTEM account
Cleaning Up
To remove all Mullvad VPN data from your system:- Linux
- macOS
- Windows
Troubleshooting
Permission Denied Errors
If you encounter permission errors:- Ensure the daemon is running as root/SYSTEM
- Check directory ownership and permissions
- On Linux/macOS, verify SELinux or AppArmor policies aren’t blocking access
Custom Paths Not Working
If custom environment variables aren’t being respected:- Verify the environment variable is set for the daemon process, not just your user session
- Restart the daemon after setting environment variables
- Check daemon logs for path-related errors
Disk Space Issues
If logs or cache are consuming too much space:Related Resources
- Environment Variables - Configure file paths and daemon behavior
- Settings Management - Understanding the settings directory