Please answer the following questions for yourself before submitting an issue
AdGuard version
4.12.81
Environment
- OS version: Hyperos 3.0 with Android 15
- Device: POCO F5
- Outbound proxy: local proxy app on 127.0.0.1:2080/7890
Tested with both NekoBox and a Clash-compatible proxy app
- Proxy app itself is excluded from AdGuard routing/filtering
- Firewall is disabled for testing
HTTPS filtering/content filtering is disabled for the related apps for testing
- Tested apps/components:
X/Twitter app modified with media download patch
Android Download Manager / Downloads
Downloads UI
Media Storage
Android Shell, for curl testing
- Direct access to X/Twitter service is blocked by local ISPs and DNS is hijacked
HTTPS filtering
Root access
Integration with AdGuard VPN
Routing mode
Local VPN
Ad Blocking
AdGuard Base filter
Privacy
AdGuard Tracking Protection filter
Social
No response
Annoyances
AdGuard Annoyances filter
Security
No response
Language-specific
No response
Other
AdGuard DNS filter
Which DNS server do you use?
Automatic DNS
DNS protocol
Regular
Custom DNS
- Local DNS Server
udp://127.0.0.1:6450
https://dns.cloudflare.com/dns-query
What Stealth Mode options do you have enabled?
Hide your IP address
Issue Details
Steps to reproduce:
- Enable AdGuard protection in Local VPN mode.
- Configure an outbound proxy in AdGuard pointing to a local proxy app, for example 127.0.0.1:2080
- Exclude the proxy app itself from AdGuard.
- In AdGuard app management, set X/Twitter, Download Manager/Downloads, Downloads UI, Media Storage, and related system components to route through AdGuard and through the configured outbound proxy. Disable HTTPS filtering and content filtering for these apps.
- Open X/Twitter and call the download action for an image or video, which invokes Android DownloadManager.
- Observe that the system download fails or keeps retrying.
- As a control test, disable AdGuard and run the same local proxy app in VPN/per-app mode with only Download Manager routed through it. The download succeeds.
- As another control test, keep the proxy app in proxy-only mode and configure Android Wi-Fi/system HTTP proxy to 127.0.0.1:2080/7890. DownloadManager also succeeds.
- Replacing NekoBox with a Clash-compatible local proxy as AdGuard’s outbound proxy does not resolve the issue.
Expected Behavior
When Download Manager/Downloads is configured in AdGuard to route through the outbound proxy, Android DownloadManager should be able to download the same media successfully.
AdGuard should either:
- route DownloadManager traffic, including DNS-related handling, through the configured outbound proxy correctly; or
- clearly indicate that DownloadManager/system download traffic is not fully supported with outbound proxy routing in Local VPN mode.
The expected result is that system downloads behave the same as when:
- the same local proxy app is used directly in VPN/per-app mode, or
- Android system/Wi-Fi HTTP proxy is set to the same local proxy port.
Actual Behavior
The X/Twitter app itself can access the network normally through AdGuard and the outbound proxy, but media downloads handled by Android DownloadManager fail.
The same proxy server works correctly when used directly:
curl -x http://127.0.0.1:2080 ... succeeds.
- SOCKS5 and HTTP CONNECT to the same local proxy port both succeed.
- The same media URL returns HTTP 200/206 through the local proxy.
- NekoBox VPN/per-app mode with only Download Manager routed through it succeeds.
- Android Wi-Fi/system HTTP proxy set to 127.0.0.1:2080 also allows DownloadManager to download successfully.
However, when AdGuard Local VPN is in front and the same local proxy is configured as AdGuard’s outbound proxy, DownloadManager fails with errors such as:
DMS_DownloadThread: uri=https://pbs.twimg.com/... statusInfo=HTTP_DATA_ERROR(495) errorMsg=java.net.SocketException: Connection reset
Sometimes it fails with a timeout:
java.net.SocketTimeoutException: failed to connect to pbs.twimg.com/<resolved IP>:443
The logs also show that the download is executed by Android DownloadManager/DownloadService, while the task is associated with the originating app:
pkg=com.twitter.android setThreadStatsPid com.twitter.android===>... com.android.providers.downloads/.service.DownloadService android.process.media
In some failed attempts, the network state reported by the download thread briefly appears as:
NetworkInfo: type: WIFI[], state: DISCONNECTED/BLOCKED
This suggests that DownloadManager traffic may not be handled by AdGuard outbound proxy routing in the same way as ordinary app traffic.
Additional Information
Control tests already performed:
- Direct local proxy test succeeds:
- HTTP CONNECT via 127.0.0.1:2080 returns HTTP 200/206.
- SOCKS5 via the same local port also succeeds.
- NekoBox VPN/per-app mode succeeds when only Download Manager is routed through it.
- Replacing NekoBox with a Clash-compatible proxy as AdGuard’s outbound proxy does not fix the issue.
- Setting Android Wi-Fi/system HTTP proxy to the same local proxy port works around the issue, but this is not ideal because it is network-specific or causes system-wide instability when set globally.
The issue appears specific to AdGuard Local VPN + outbound proxy handling of Android DownloadManager/system download traffic. Ordinary app traffic can still work through AdGuard and the same outbound proxy.
Please answer the following questions for yourself before submitting an issue
AdGuard version
4.12.81
Environment
Tested with both NekoBox and a Clash-compatible proxy app
HTTPS filtering/content filtering is disabled for the related apps for testing
X/Twitter app modified with media download patch
Android Download Manager / Downloads
Downloads UI
Media Storage
Android Shell, for curl testing
HTTPS filtering
Root access
Integration with AdGuard VPN
Routing mode
Local VPN
Ad Blocking
AdGuard Base filter
Privacy
AdGuard Tracking Protection filter
Social
No response
Annoyances
AdGuard Annoyances filter
Security
No response
Language-specific
No response
Other
AdGuard DNS filter
Which DNS server do you use?
Automatic DNS
DNS protocol
Regular
Custom DNS
udp://127.0.0.1:6450https://dns.cloudflare.com/dns-queryWhat Stealth Mode options do you have enabled?
Hide your IP address
Issue Details
Steps to reproduce:
Expected Behavior
When Download Manager/Downloads is configured in AdGuard to route through the outbound proxy, Android DownloadManager should be able to download the same media successfully.
AdGuard should either:
The expected result is that system downloads behave the same as when:
Actual Behavior
The X/Twitter app itself can access the network normally through AdGuard and the outbound proxy, but media downloads handled by Android DownloadManager fail.
The same proxy server works correctly when used directly:
curl -x http://127.0.0.1:2080 ...succeeds.However, when AdGuard Local VPN is in front and the same local proxy is configured as AdGuard’s outbound proxy, DownloadManager fails with errors such as:
Sometimes it fails with a timeout:
The logs also show that the download is executed by Android DownloadManager/DownloadService, while the task is associated with the originating app:
In some failed attempts, the network state reported by the download thread briefly appears as:
This suggests that DownloadManager traffic may not be handled by AdGuard outbound proxy routing in the same way as ordinary app traffic.
Additional Information
Control tests already performed:
The issue appears specific to AdGuard Local VPN + outbound proxy handling of Android DownloadManager/system download traffic. Ordinary app traffic can still work through AdGuard and the same outbound proxy.