2 releases

Uses new Rust 2024

0.1.3 Nov 26, 2025
0.1.2 Nov 25, 2025

#330 in Cargo plugins

MIT/Apache

16KB
320 lines

Crates.io GitHub License

Problem

Supply chain attacks became very common thing these days, but we're still running untrusted code on our machines everyday. This crate provides safe-cargo subcommand, that runs all commands in a sandboxed environment.

For now it is working on macOS only using Apple's sandboxing mechanism.

How to use it?

Installation

$ cargo install safe-cargo

Using is pretty simple, you can use any cargo command:

$ safe-cargo buld
$ safe-cargo test
$ safe-cargo run

Or any other cargo command.

What is allowed inside sandoxed environment

Read access

Sandobx allow access to list all files (without reading their content), and read/execute following files and directories:

  • /dev/random and /dev/urandom
  • /dev/tty
  • All files in PATH directiories
  • All files in following directories (and subdirectories):
    • /private/etc/
    • /private/var/db/timezone/
    • /Applications/Xcode.app/Contents/Developer
    • /usr/lib/
    • /private/var/db/dyld/
    • /System/Library/
    • /System/Volumes/Preboot/Cryptexes/OS
    • /System/Cryptexes/OS/
    • /Library/Preferences/

Write access

  • OS temporary directory
  • cargo and target directories private to a sandbox (separate from $HOME/.cargo and target in your workdir)
  • Cargo.lock in your project directory – otherwise it's impossible to build a project

Network access

  • communication over /private/var/run/mDNSResponder – to allow DNS lookups
  • outbound network connections to ports 80/443 - to download crates

Full list of permissions can be found in sources.

No runtime deps