[BUG] Inconsistent Network Behavior and Unclear UX in Default Cloud Environment
Status Open
Maintainer reply None cached
Activity 12 comments · opened Oct 24, 2025
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?
The "Default Cloud Environment" with "Trusted network access" exhibits critical inconsistencies and a confusing user experience that prevents it from being a functional, ready-to-use environment for common tasks like web scraping.
- Inconsistent Network Blocking: There is a fundamental inconsistency in how network restrictions are applied. When attempting to access a non-allowlisted domain (
jenni.ai), acurlcommand from the shell resolves the host and receives anHTTP/2 403response. However, a Python script usingaiohttp(as part of thecrawl4aitool) fails at a much lower level with a DNS resolution error (Temporary failure in name resolution). This inconsistent behavior makes debugging the environment's limitations extremely difficult.
- Misleading User Interface: The "Trusted network access" setting (see screenshot) is misleading. The term "Trusted" implies a permissive state, when in fact it enables a highly restrictive allowlist that blocks access to most public domains. This creates a significant gap between user expectation and reality, leading users to believe the environment is broken when it is, by design, simply restricted. The UI does not provide any context about what this setting actually does or link to the list of allowed domains.
- Missing Core Dependencies for Fallback Mechanisms: The environment's "universal image" is missing key dependencies required for its own fallback logic. The
crawl4aitool correctly tried to fall back from the missing Docker backend to thenative(Playwright) backend, but this also failed because Playwright and its browser dependencies are not pre-installed. The subsequent attempt to install them failed due to the network restrictions mentioned above, creating a catch-22.
What Should Happen?
The cloud environment should be consistent, transparent, and ready for common development tasks.
- Consistent Network Failure: All tools and processes should fail consistently when accessing a blocked domain. If a domain is not on the allowlist, all outbound connection attempts to it—whether from
curl, Python, Node.js, or any other tool—should fail at the same level (e.g., DNS resolution failure or a clear proxy rejection), not behave differently depending on the tool.
- Clear UI and User Guidance: The "Network access" setting in the UI should use clearer language.
- Rename "Trusted network access" to something more descriptive like "Limited (Allowlisted Domains Only)".
- The UI should include a tooltip or link that directs users to the documentation listing the allowed domains.
- Functional Fallbacks: If a "native" backend like Playwright is a primary fallback for the unavailable Docker backend, its dependencies should be pre-installed on the "universal image." A user should not be required to install core components of a fallback system, especially in a network-restricted environment where such installation is doomed to fail.
- Automated Dependency Installation: For a smoother experience, the environment should attempt to auto-detect and run project dependency installations (like
make installorpip install) upon startup.
Error Messages/Logs
* **Python DNS Failure:**
Error fetching https://jenni.ai directly: Cannot connect to host jenni.ai:443 ssl:default [Temporary failure in name resolution]
* **Playwright Install Failure (due to network block):**
Failed to install browsers
Error: Download failure, code=1
* **Docker Not Found:**
make: docker: No such file or directory
make: *** [Makefile:48: docker-start] Error 127
Steps to Reproduce
- On a mobile device, start a new Claude Code session.
- Select the "Default Cloud Environment" and set "Network access" to "Trusted network access".
- Use the
coygeek/2025-07-01-crawl4airepository. - Provide the prompt:
Scrape https://jenni.ai/ and all its pages. This domain is not on the default allowlist. - Observe Claude's attempts: it will correctly try to run
make install, then fail on the Docker backend, then fail to install the Playwright native backend due to network restrictions, and finally fail on the HTTP backend with a Python DNS error. - To confirm the inconsistency, ask Claude to run
curl -I https://jenni.ai. Observe that this command does not fail on DNS resolution but instead receives an HTTP403response, demonstrating the inconsistent network behavior.
Claude Model
Sonnet (default)
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.0.26
Platform
Other
Operating System
macOS
Terminal/Shell
Other
Additional Information
- This report is based on the official sandboxing documentation, which clarifies that the network restrictions are an intentional security feature. The core bugs reported here are the inconsistency of that feature's implementation and the poor user experience surrounding it.
- Claude's agentic reasoning throughout the process was excellent. It correctly identified missing dependencies and attempted logical fallbacks. The failure was entirely due to the environment's configuration and limitations.
- The attached screenshot shows the UI for configuring the cloud environment, highlighting the "Trusted network access" option that is the source of the user experience confusion.
Showing cached comments. Read the full discussion on GitHub ↗
11 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
[[BUG]] Cloud Environment Has Inconsistent and Broken Network/DNS Resolution for Python and Node.js
What's Wrong?
The Claude Code on the web cloud environment exhibits critical network inconsistencies that prevent the successful execution of common development tasks, specifically those involving Python or Node.js-based tools that need to download dependencies or access the web.
Even when the environment is set to "Full internet access," the underlying networking is broken for specific runtimes:
socketandaiohttp) are unable to resolve any external domains, failing with aTemporary failure in name resolutionerror.playwright(which uses a Node.js script) fail to download necessary binaries, even when their CDNs (playwright.azureedge.net) are on the allowlist.curlandpipdo have functional network access (likely because they are correctly configured to use a system proxy), while Python and Node.js scripts in the same environment do not. This inconsistency makes debugging the environment's limitations nearly impossible for both the user and the AI agent.WebFetchTool Fails: The built-inWebFetchtool fails its own internal safety check because it cannot resolveclaude.ai, even when the domain is explicitly added to the "Limited" network allowlist.The cumulative effect is that the "universal image" is not functional for any task that requires installing dependencies with post-install scripts or running Python code that makes web requests.
What Should Happen?
The cloud environment should provide consistent and functional network access that aligns with the user's selected setting ("Full" or "Limited").
curl) should have the same level of network access. Ifcurlcan connect to a host, Python'ssocket.gethostbynameshould also be able to resolve it.pip installornpm installfor a package with post-install download scripts (like Playwright) should succeed when network access is set to "Full".WebFetchReliability: TheWebFetchtool should function correctly in "Limited" mode as long as its required operational domains (e.g.,claude.ai) are included in the allowlist.Error Messages/Logs
``
``socket.gaierror: [Errno -3] Temporary failure in name resolution
``
``Failed to install browsers
Error: Failed to download Chromium 140.0.7339.16 (playwright build v1187), caused by
Error: Download failure, code=1
WebFetchSafety Check Failure:``
``Unable to verify if domain jenni.ai is safe to fetch. This may be due to network restrictions or enterprise security policies blocking claude.ai.
``
``/bin/bash: line 1: docker: command not found
Steps to Reproduce
https://github.com/coygeek/2025-07-01-crawl4ai> First, run
make install. This will attempt to install dependencies including Playwright.make installcommand will successfully install Python packages viapipbut will fail with aDownload failure, code=1error when theplaywright installpost-install script runs.> Run this python command:
python3 -c "import socket; print(socket.gethostbyname('google.com'))"Temporary failure in name resolution, whilecurl -I https://google.comwould succeed.Additional Information
HTTPS_PROXYandHTTP_PROXYenvironment variables set (e.g.,HTTPS_PROXY=http://...:15002). This strongly suggests thatcurlandpipare respecting this proxy, but the Pythonsocketlibrary and the Node.js script used by Playwright are not, leading to the inconsistent behavior.Similar issue with Go dependencies:
I encounter the same failure in the Default environment, in a new environment with Full Network Access, and even in a custom environment where I've explicitly allowed the following in addition to the default list:
Not having, or being able to install, the correct tooling is a major blocker to using Claude Code on the Web.
I have similar DNS resolution issues.
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
Still occuring
.
Adding a related data point from a different surface: I've been hitting the same DNS resolution failure in claude.ai's code execution sandbox (not Claude Code's cloud environment), where
pip installfails withTemporary failure in name resolutionforpypi.org.What's notable is the intermittency — the failure is not consistent across sessions. Starting a fresh conversation (which presumably spins up a new sandbox container) often resolves it. This suggests the problem is at the container/instance level rather than a blanket policy, which aligns with the inconsistency described here.
The user-facing experience is particularly confusing because:
The core issue this report identifies — inconsistent enforcement + no user visibility — applies equally to the claude.ai sandbox context. A simple session-level network health indicator would go a long way toward reducing confusion.
Checked the current state on 2026-05-07. This issue is still unresolved.
Still relevant as of 2026-05-28. I checked the current docs and this documentation gap still appears unresolved.
Verified against the latest docs; this still appears unresolved.