Skip to content

macOS Seatbelt sandbox blocks outbound DNS resolution in Agent mode #272

@francofang

Description

@francofang

macOS Seatbelt sandbox blocks outbound DNS resolution in Agent mode

Summary

Shell commands that require outbound network access (e.g. fetching YouTube content) fail with DNS resolution errors in Agent mode, but work correctly in YOLO mode on the same machine.

Environment

  • deepseek-tui 0.8.1
  • macOS (Apple Silicon, aarch64)
  • Sandbox: macos-seatbelt (as reported by deepseek doctor)
  • sandbox_mode: workspace-write (default)

Steps to Reproduce

  1. Start DeepSeek TUI in Agent mode (default).
  2. Ask the agent to fetch or process content from an external URL (e.g. YouTube).
  3. The agent attempts a shell command involving DNS resolution (curl, wget, etc.).
  4. DNS resolution fails.

Expected Behavior

After the user approves the shell command, it should execute with full network access, same as running the command directly in the terminal.

Actual Behavior

The command runs inside the Seatbelt sandbox, which blocks DNS resolution. Error message:

DNS resolution failed for YouTube. This is a network issue — the sandbox can't reach YouTube's servers.

Workaround

Switching to YOLO mode resolves the issue, as commands bypass the Seatbelt sandbox wrapper.

Investigation

  • Confirmed the issue is not a general network problem — Claude Code and OpenAI Codex execute identical network commands without issue on the same machine.
  • Adding sandbox_mode = "danger-full-access" and configuring [network] default = "allow" with explicit domain allowlists in config.toml had no effect. Only switching to YOLO mode resolved it.
  • This suggests the Seatbelt profile compiled into the binary restricts outbound network access at the OS level, and user-facing config options cannot override it.

Suggestion

Consider either:

  • Allowing outbound network access in the Seatbelt profile after the user has explicitly approved the command (the approval step already provides the safety gate).
  • Exposing a config option that controls whether approved shell commands run inside or outside the Seatbelt sandbox.
  • Documenting this limitation for macOS users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions