Files
pmg/docs/config.md
T
d6755d3f44 feat/sandbox allow explicit dangerous pattern override (#239)
* feat(sandbox): allow opt-out of mandatory deny via explicit allow rules

Mandatory deny patterns (.env, .aws, .ssh, .gcloud, .kube, .gnupg,
.docker/config.json, .git/config) can now be opted out by listing the
exact literal post-expansion path in policy filesystem.allow_read /
allow_write, OR via --sandbox-allow read=... / write=... at runtime.
Both channels are treated at par.

Suppression is exact-match. Listing the CWD-absolute or HOME-absolute
form of a dangerous file additionally suppresses its **/<file> glob
sibling on the same direction so a single opt-out is sufficient.
Broad globs (${CWD}/**) and relative paths in user allow lists do not
suppress. The unnamed absolute form remains denied. .git/hooks is
unconditional and never suppressible (arbitrary code execution risk).

GetMandatoryDenyPatterns now returns split DenyRead / DenyWrite
slices and reports SuppressedRead / SuppressedWrite for audit. Both
translators emit per-direction deny rules and log.Warnf each
suppression. On Linux/bubblewrap, the tmpfs hide is restricted to the
intersection of DenyRead and DenyWrite; one-sided suppression falls
back to /dev/null (write) or the user's allow_read --ro-bind (read).
bwrap has no primitive that allows writes while denying reads, so
write-only opt-outs warn that the read-side mandatory deny is
unenforceable.

Updates docs/sandbox.md to document the opt-out, exact-match
semantics, and the Linux platform limitation. Updates pmg-e2e.yml to
create ./.env so the sandbox e2e test exercises the BLOCK case.

Closes #232

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: Code review fixes

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 12:45:36 +05:30

1.5 KiB

Configuration

PMG supports local configuration through a configuration file. To create the default configuration file, run:

pmg setup install

To see the configuration file path and activated configuration, run:

pmg setup info

To edit configuration file:

pmg setup edit

See config template for the configuration schema.

Environment Variables

Any configuration key can be overridden using environment variables, without modifying the config file. This is useful for CI/CD pipelines or temporary overrides.

Format: PMG_<KEY> where the key is the config key uppercased, with nested keys joined by _.

Config key Environment variable
transitive PMG_TRANSITIVE
paranoid PMG_PARANOID
proxy_mode PMG_PROXY_MODE
proxy_install_only PMG_PROXY_INSTALL_ONLY
verbosity PMG_VERBOSITY
skip_event_logging PMG_SKIP_EVENT_LOGGING
sandbox.enabled PMG_SANDBOX_ENABLED
dependency_cooldown.enabled PMG_DEPENDENCY_COOLDOWN_ENABLED
cloud.enabled PMG_CLOUD_ENABLED

Example:

# Enable paranoid mode without editing the config file
PMG_PARANOID=true pmg npm install express

# Restrict proxy to install commands only
PMG_PROXY_INSTALL_ONLY=true pmg npm install express

Precedence (highest to lowest):

  1. CLI flags
  2. Environment variables (PMG_*)
  3. Config file (config.yml)
  4. Built-in defaults