Some generative features do not respect the system proxy configuration
Photoshop 2026 GenAI components ignore all system proxy configuration
Component: Photoshop 2026 / Generative AI (transmute module, Firefly services) Affects version: Photoshop 27.6.0 (PHSP 27), ACPL SDK 5.11.0, UXP Runtime 9.2.0
Summary
Photoshop 2026's Generative AI features connect directly to their service endpoints, ignoring every proxy configuration mechanism Windows provides. On networks where direct internet egress is restricted and traffic must traverse an explicit HTTP proxy, these features fail with generic timeout errors after 75–95 seconds.
Other components inside the *same Photoshop process* use the configured proxy correctly and concurrently. This is not a machine-wide or network-wide misconfiguration — it is specific to the code path serving these features.
Because these components connect directly, they succeed only where the network perimeter happens to permit the destination. Where a destination's address pool is partially permitted, the same feature succeeds or fails depending on which address DNS returns, producing intermittent, hard-to-diagnose behavior.
Impact — tested across seven features
| Feature | Endpoint(s) used | Result |
|---|---|---|
| Rotate Object | filix3.ff.adobe.io, di-imaging.ff.adobe.io | Fails — ~90 s hang, then generic-error |
| Harmonize | di-imaging-genharm.ff.adobe.io, cis-utils-storage-prod.s3-accelerate.amazonaws.com | Fails — 1004 server-not-responding |
| Generative Upscale | upsampler-v1.ff.adobe.io | Fails consistently |
| Generative Expand | di-me.ff.adobe.io | Fails — 1004 server-not-responding |
| Generative Fill | di-me.ff.adobe.io | Succeeds *only after retries* |
| Generative Image | firefly-clio-imaging.adobe.io, pre-signed-firefly-prod.s3-accelerate.amazonaws.com | Succeeds |
| Remove Tool | no cloud endpoint observed | Not reproduced |
Every one of these features connected directly, bypassing the proxy. The difference between success and failure was solely whether the perimeter permitted the destination address — not whether the proxy was configured or permitted the host.
Notably, Generative Fill and Generative Expand use the same host (di-me.ff.adobe.io) and produced different outcomes in the same session. Both logged a transport error first; Fill recovered via import-images-succeed-with-retries, Expand did not.
Rotate Object has 22 failures and 0 successes across all available logs on this host.
Control: the same Adobe account works correctly on a machine with unrestricted direct internet access. This rules out entitlement, licensing, and account state.
Environment
- Adobe Photoshop 2026, version 27.6.0 (PHSP 27)
- ACPL SDK 5.11.0, UXP Runtime 9.2.0 (
win32 10.0.19045; x64) - Windows 10 Enterprise 19045
- Enterprise network, restricted direct egress, explicit HTTP proxy (Squid 5.4)
Internal hostnames, IP addresses and domain names in this report have been replaced with placeholders (proxy.internal,10.0.0.10,.internal.example.com). Adobe-owned hostnames and public addresses are unmodified. All other values — timings, counts, memory addresses, error strings — are verbatim.
Affected endpoints
From Required/transmute/config.json and runtime ps.url values:
| Endpoint | Port | Purpose |
|---|---|---|
filix3.ff.adobe.io (/v1/3d-models/generate-from-image-async) | 443 | Rotate Object — ImageTo3D |
firefly-substance3d.ff.adobe.io | 443 | clio-imaging-3di |
di-imaging.ff.adobe.io | 443 | Imaging / Select Subject |
di-imaging-genharm.ff.adobe.io | 443 | Harmonize imaging |
di-me.ff.adobe.io | 443 | Generative Fill / Expand image upload |
firefly-clio-imaging.adobe.io | 443 | Generative Image |
upsampler-v1.ff.adobe.io | 443 | Generative Upscale |
cis-utils-storage-prod.s3-accelerate.amazonaws.com | 443 | Harmonize asset upload |
pre-signed-firefly-prod.s3-accelerate.amazonaws.com | 443 | Generative Image asset upload |
ocsp.rootca1.amazontrust.com, ocsp.rootg2.amazontrust.com | 80 | OCSP certificate revocation |
crl.rootca1.amazontrust.com, crl.rootg2.amazontrust.com | 80 | CRL certificate revocation |
Root cause
The affected components open direct TCP connections to their service endpoints and never issue an HTTP CONNECT request to the configured proxy — under any proxy configuration, including configurations the components themselves have API access to read.
Evidence
1. All five proxy mechanisms were configured, verified active, and ignored
Each mechanism was independently verified as *active and correct at the moment of failure*, not merely set:
| Mechanism | Value | Verification method | Honored? |
|---|---|---|---|
| WinINET static | ProxyEnable=0x1, ProxyServer=proxy.internal:8080 | registry read-back | No |
| WinINET PAC | AutoConfigURL → PROXY proxy.internal:8080 | FindProxyForURL() evaluated against the live PAC | No |
| WPAD auto-detect | AutoDetect=0x1, flags byte 0x0D | registry + DefaultConnectionSettings decode | No |
| WinHTTP (machine) | proxy.internal:8080 | netsh winhttp show proxy | No |
| Environment variables | HTTP_PROXY/HTTPS_PROXY/ALL_PROXY | PEB read of the live process | No |
Environment variables were confirmed present in the running process by reading PEB → ProcessParameters → Environment from PID 37960:
Environment block : 0x1B833993480 size=35554 bytes (285 variables)
HTTP_PROXY=http://proxy.internal:8080
HTTPS_PROXY=http://proxy.internal:8080
ALL_PROXY=http://proxy.internal:8080
http_proxy=http://proxy.internal:8080
https_proxy=http://proxy.internal:8080
NO_PROXY=.internal.example.com,localhost,127.0.0.1NO_PROXY contains only internal domains and matches no affected endpoint, so the direct connections were not a legitimate no-proxy bypass.
2. The proxy demonstrably permits these hosts
Tested independently with curl through the same proxy the application was pointed at:
CONNECT filix3.ff.adobe.io:443 → 200 Connection established
CONNECT di-imaging.ff.adobe.io:443 → 200 Connection established
CONNECT di-imaging-genharm.ff.adobe.io:443 → 200 Connection established
CONNECT cis-utils-storage-prod.s3-accelerate...:443 → 200 Connection establishedTLS is not intercepted — the certificate presented is genuine Adobe (CN=*.ff.adobe.io, O=Adobe Inc., issued by DigiCert), so certificate pinning is not a factor.
3. Same-process control: the proxy path is healthy, the direct path is chosen anyway
Socket sampling of Photoshop.exe at 1 Hz over a 15-minute window containing one Rotate Object and one Harmonize attempt:
2475× 10.0.0.10:8080 ESTABLISHED proxy connections, healthy throughout
65× 34.193.227.236:443 ESTABLISHED image.adobe.io — DIRECT, and succeeds
254× 3.163.24.x:443 SYN_SENT di-imaging — never completes
13× 3.169.163.116:443 SYN_SENT cis-utils-storage — never completes
0× CONNECT for any affected hostThe decisive line is image.adobe.io: 65 successful direct connections in the same process, at the same time. The component always connects directly. It succeeds only where the perimeter permits the destination. This demonstrates the behavior is unconditional — not a fallback after a proxy failure.
A separate 15-minute window covering Generative Fill, Expand, Image and Upscale showed the same pattern. Every destination Photoshop reached directly was a Firefly endpoint or a certificate-revocation host; every other destination in the process went through the proxy. The bypass is confined to one code path and is consistent across features.
4. Partial reachability produces intermittent failures
Within a single host's address pool, some addresses were reachable and others were not:
di-me.ff.adobe.io 35.80.193.162 ESTABLISHED ← 1 of 4
32.184.59.208 SYN_SENT
44.254.102.171 SYN_SENT
54.148.103.46 SYN_SENT
upsampler-v1.ff.adobe.io 52.35.200.68 / 44.250.87.225 / 184.34.94.30 all SYN_SENTThis is why Generative Fill (which retries) recovered and Generative Expand did not, despite using the same hostname in the same session — and why Generative Upscale, whose pool had no reachable address, failed every time.
These endpoints publish DNS TTLs of 4–5 seconds with rotating address pools, which makes the resulting behavior non-deterministic from the user's perspective and extremely difficult to diagnose from the UI.
5. Protocol analysis
The affected API traffic is ordinary HTTPS and is proxy-compatible:
- API traffic: TCP 443 only; no UDP/QUIC to any external address in any capture
- Schemes: every URL in
transmute/config.jsonand every runtimeps.urlishttps:// - WebSocket: the binary contains WebSocket code, but the only
ws://URL isws://localhost(local panel IPC). No remotewss://endpoint is used by these features, and no HTTPUpgradeor WebSocket handshake appears in any capture. - Certificate revocation: the same components additionally issue direct TCP 80 OCSP/CRL requests to
*.amazontrust.com, which also bypass the proxy and are also blocked. These are listed among the affected endpoints above.
Most conclusively, di-imaging.ff.adobe.io was observed completing successfully through an HTTP CONNECT tunnel — CONNECT → 200, TLS 1.2 handshake, 268 KB upload, response in 350 ms, with Select Subject logging success. The endpoint is fully proxy-compatible; the client simply does not use the proxy.
6. Binary analysis
Photoshop.exe imports:
WinHttpOpen (×2) WinHttpGetIEProxyConfigForCurrentUser
WinHttpGetProxyForUrl WinHttpSetCredentials
WinHttpQueryAuthSchemes WinHttpConnect / WinHttpSendRequest / ...No libcurl symbols are present. Photoshop therefore *has* full proxy-aware and proxy-authentication plumbing available, and uses it elsewhere in the same process.
WinHttpOpen appearing twice, combined with the observed split behavior, is consistent with one WinHTTP session being created with WINHTTP_ACCESS_TYPE_NO_PROXY while another uses the proxy-aware path.
Note: this specific mechanism is an inference from observed behavior plus the import table, not a conclusion from disassembly. The observable facts — that five configured proxy mechanisms are all ignored on this code path while honored on others in the same process — hold regardless of the internal cause.
Steps to reproduce
- Configure a Windows host with no direct internet egress; require an explicit HTTP proxy.
- Configure the proxy via any or all of: WinINET static, PAC, WPAD,
netsh winhttp, environment variables. - Ensure the proxy permits
CONNECTto*.ff.adobe.ioand the S3 upload endpoints (verify withcurl -x). - Launch Photoshop 2026 and invoke any Generative AI feature — Rotate Object and Generative Upscale reproduce most reliably.
Expected: Photoshop issues CONNECT filix3.ff.adobe.io:443 (or equivalent) to the configured proxy.
Actual: Photoshop opens a direct TCP connection that the network drops, retries for 75–95 seconds, then reports generic-error or 1004 server-not-responding. No CONNECT is ever issued for these endpoints.
Ruled out
- Entitlement / licensing — same account works on a direct-internet machine
- Proxy allowlist — proxy returns
CONNECT ... 200for all affected hosts - TLS interception / certificate pinning — genuine Adobe DigiCert certificate, no MITM
- Adobe service availability — the one call that does traverse the proxy responds in 350 ms
- Protocol incompatibility — plain HTTPS over TCP 443; no WebSocket, QUIC, or alternate scheme
NO_PROXYmisconfiguration — verified in-process; matches no affected host- Proxy authentication — reproduced against a proxy requiring no authentication for these hosts
Requested actions
- Route Firefly/GenAI traffic through the same proxy-aware HTTP client used elsewhere in Photoshop — honoring
WinHttpGetIEProxyConfigForCurrentUserandWinHttpGetProxyForUrl, includingNegotiate/NTLM proxy authentication. This should cover OCSP/CRL retrieval as well. - Short term: provide a documented configuration override to force proxy usage for these endpoints.
- Surface the underlying transport error.
generic-errorand1004 server-not-respondingare indistinguishable from entitlement failures, service outages, or network problems, which made this substantially harder to diagnose than necessary. - Publish the complete endpoint list for GenAI features, including ports. These services are sharded across many hostnames (
filix3,di-me,di-imaging,di-imaging-genharm,firefly-substance3d,firefly-clio-imaging,image-v5,upsampler-v1,di-imaging-clio-erase) plus S3 upload endpoints and OCSP/CRL hosts. At present they are discoverable only by triggering failures, which makes enterprise network configuration reactive and incomplete.
Note for triage
This is not a customer network misconfiguration. The proxy is correctly configured and permits the traffic; Photoshop does not use it. Any enterprise operating behind an explicit proxy should reproduce this.
The image.adobe.io control — 65 successful direct connections alongside 267 failed direct attempts, in a single process — demonstrates the component never attempts the proxy under any configuration. The feature matrix above shows the behavior is systemic across the Generative AI feature set rather than specific to one tool.
