AdguardTeam / AdguardTeam/AdguardForAndroid

Support "Allow apps to bypass VPN" functionality

Open
#5,723 6 comments 11 reactions 0 assignees View on GitHub
Feature request Priority: P4 TechAudit Voting
Dominant language
No language data
Stars
1.9k
Forks
121
PR merge metrics
No merged PRs in 30d

Description

### Issue Details

### Current Behavior:​​

- AdGuard’s VPN routing is solely controlled by app package names.

- No option exists for apps to dynamically bypass the VPN, even if they support it (e.g., for latency-sensitive or battery-critical traffic).

### Problems This Solves:​

1. Google FCM Push Notifications:​​
Bypassing the VPN for FCM reduces battery drain and improves reliability while retaining ad/tracking filtering for other traffic.

1. ​​Game Streaming/P2P Apps:​​
Enables stable low-latency connections without requiring users to disable the VPN entirely.

### Documentation References

- [Android VPN Bypass Guide](https://developer.android.com/develop/connectivity/vpn#bypass_vpn )
- `VpnService.Builder.allowBypass()`: [API Spec](https://developer.android.com/reference/android/net/VpnService.Builder#allowBypass() )

### Proposed solution

### ​​Implementation:

- Call `VpnService.Builder.allowBypass()` when establishing the VPN interface.

### User Control:

- Add a toggle in AdGuard’s settings (e.g., "Allow apps to bypass VPN").
- Default: ​​**Disabled**​​ (maintains current behavior unless explicitly enabled).

### ​​Backward Compatibility:

- No impact on existing per-app routing rules (package-name-based filtering remains intact).

### Alternative solution

_No response_

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.