Exploring macOS's sandbox-exec for Secure Application Execution

sandbox-exec is a command-line utility built into macOS, designed to execute applications within a sandboxed environment. This tool helps in creating a secure, restricted space where applications can run with limited access to system resources, thereby minimizing the risks from malicious code or unintended behavior.
Key Details
Application sandboxing with sandbox-exec is aimed at protecting against malicious code, limiting damage from compromised applications, and enhancing privacy and resource control. To use sandbox-exec, you need a sandbox profile, which is a configuration file that outlines the rules for the secure environment. The basic command syntax is:
sandbox-exec -f profile.sb command_to_runHere, profile.sb specifies the rules, and command_to_run is the application to be executed within these constraints.
Sandbox profiles are written using a Scheme-like syntax and include version declarations, default policies, and specific rules. There are two fundamental approaches to setting up these profiles:
- Deny by Default: Restricts all operations initially and allows only necessary ones. Example:
(version 1) (deny default) (allow file-read-data (regex "^/usr/lib")) (allow process-exec (literal "/usr/bin/python3"))- Allow by Default: Permits all except specific operations. Example:
(version 1) (allow default) (deny network*) (deny file-write* (regex "^/Users"))For practical use, you might set up a sandbox terminal session with no network access:
# terminal-sandbox.sb (version 1) (allow default) (deny network*) (deny file-read-data (regex "/Users/[^/]+/(Documents|Pictures|Desktop)")Run it using:
sandbox-exec -f terminal-sandbox.sb zshAdditionally, macOS provides pre-built profiles in /System/Library/Sandbox/Profiles for common restriction scenarios, such as the no-network profile.
Who It's For
This tool is ideal for developers and security professionals who need to test applications in a controlled environment or impose strict security policies.
📖 Read the full source: HN LLM Tools
👀 See Also

Merlin: Local-first LLM context dedup – measure up to 71% chunk overlap, free & open-core
Merlin is a local-first context dedup tool that measured 22-71% chunk overlap across 22M passages from real agent/RAG sessions. Ships as HTTP proxy (Ollama/vLLM/SGLang/llama.cpp), MCP server (Claude/Cursor/OpenClaw), or standalone CLI. MIT open-core with daily usage caps.

MCP Server for Semantic Search in Obsidian Vaults
A developer built an MCP server that indexes Obsidian vaults into Qdrant with local embeddings, enabling semantic search instead of keyword matching. It chunks markdown by headings, uses BAAI/bge-small-en-v1.5 embeddings, and works with Claude Code, Cursor, Windsurf, or any MCP client.

Code retrieval for AI agents: Why vector embeddings fail and per-file LLM graphs win
After a year of building a code indexing system, the team behind Bytebell found that vector embeddings on code chunks and Tree-sitter ASTs both fell short, while per-file LLM summaries stored in a Neo4j graph with semantic fulltext search significantly improved retrieval precision.

Lightfeed Extractor: TypeScript Library for Robust Web Data Extraction with LLMs
Lightfeed Extractor is a TypeScript library that handles the full pipeline from raw HTML to validated structured data using LLMs, with features like HTML-to-markdown conversion, Zod schema validation, JSON recovery, and built-in Playwright browser automation.