[BUG] Cloud scheduled tasks: gRPC/HTTP2 blocked by sandbox TLS proxy to googleapis.com
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Cloud scheduled tasks (remote triggers) running in anthropic_cloud environments cannot connect to
Google APIs. A TLS-intercepting proxy at ipv4:21.0.0.x:15004 intercepts all outbound connections and
presents a self-signed certificate, causing gRPC SSL handshake failures and HTTP 403 responses.
This affects:
- Google Ads API (gRPC) — SSL_ERROR_SSL: CERTIFICATE_VERIFY_FAILED: self signed certificate in
certificate chain
- GA4 Analytics Data API (gRPC) — same error
- Google Search Console API (REST/HTTPS) — HTTP 403 via proxy
HubSpot API (via MCP connector) and direct web search work fine. Only Google API traffic is blocked.
What Should Happen?
Outbound connections to *.googleapis.com should be allowed through the sandbox proxy without TLS
interception, or the proxy's CA certificate should be included in the system trust store
(/etc/ssl/certs/ca-certificates.crt) and available via GRPC_DEFAULT_SSL_ROOTS_FILE_PATH.
Error Messages/Logs
google.api_core.exceptions.ServiceUnavailable: 503 DNS resolution failed for
googleads.googleapis.com:443:
SSL handshake failed: SSL_ERROR_SSL: error:1000007d:SSL
routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
(self signed certificate in certificate chain)
Connection to ipv4:21.0.0.61:15004 failed
Attempted fixes (none worked):
- NO_PROXY=googleapis.com,google.com — proxy is transparent, bypass ignored
- GRPC_DEFAULT_SSL_ROOTS_FILE_PATH pointing to combined CA bundle with extracted proxy certs
- SSL_CERT_FILE / REQUESTS_CA_BUNDLE / CURL_CA_BUNDLE set to combined bundle
- System CA store at /etc/ssl/certs/ca-certificates.crt
Steps to Reproduce
- Create a scheduled trigger in an anthropic_cloud environment
- Set Google API credentials as environment variables (GOOGLE_ADS_DEVELOPER_TOKEN,
GOOGLE_ADS_CLIENT_ID, etc.)
- Run:
pip install google-ads
python3 -c "
import os
from google.ads.googleads.client import GoogleAdsClient
config = {
'developer_token': os.getenv('GOOGLE_ADS_DEVELOPER_TOKEN'),
'client_id': os.getenv('GOOGLE_ADS_CLIENT_ID'),
'client_secret': os.getenv('GOOGLE_ADS_CLIENT_SECRET'),
'refresh_token': os.getenv('GOOGLE_ADS_REFRESH_TOKEN'),
'use_proto_plus': True,
}
client = GoogleAdsClient.load_from_dict(config)
service = client.get_service('CustomerService')
result = service.list_accessible_customers()
print(result.resource_names)
"
- Fails with SSL/gRPC error above
- Same credentials work locally outside the sandbox
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.87
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
- Environment type: anthropic_cloud
- Tested over 8 consecutive scheduled trigger runs spanning 2 days
- Proxy IP addresses observed across runs: 21.0.0.61, 21.0.0.91, 21.0.0.121, 21.0.0.159 (all on port
15004) — rotating IPs suggest a proxy pool
- Python packages: google-ads, google-api-python-client, google-analytics-data (all latest via pip)
- HubSpot MCP connector works fine in the same environment — only Google API traffic is affected
- The same scripts and credentials work locally on macOS outside the sandbox
- All three Google APIs affected: Google Ads (gRPC), GA4 Data API (gRPC), Search Console (REST)
- openssl s_client -connect googleads.googleapis.com:443 from within the sandbox returns the proxy's
self-signed cert chain, confirming transparent TLS interception
- Attempted workarounds that did NOT resolve the issue:
- NO_PROXY=googleapis.com,google.com — transparent proxy ignores bypass
- GRPC_DEFAULT_SSL_ROOTS_FILE_PATH with extracted proxy CA certs
- SSL_CERT_FILE / REQUESTS_CA_BUNDLE / CURL_CA_BUNDLE with combined CA bundle
- System CA store at /etc/ssl/certs/ca-certificates.crt
- Error evolved from CERTIFICATE_VERIFY_FAILED (early runs) to HTTP 403 (later runs after CA bundle
fix), suggesting the proxy actively rejects gRPC/HTTP2 after TLS is resolved
Impact: Scheduled cloud agents cannot access any Google API, limiting marketing automation to
HubSpot-only data sources.
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗