0.2.3 — security hardening
security hardening
- Redact secret values from ALL returned fields (command/stdout/stderr/error)
and the log line, not just the happy-path command. Fixes plaintext leak on a
failedmodal secret create(e.g. secret exists without --force). - Add
--end-of-options before every user-supplied name/path so a value
starting with-can't be parsed as a modal CLI flag (option injection).
Also letsexec_modal_containerpass the command's own flags through. - Bound ReDoS in log search: cap pattern length, clamp context/max_matches,
match each line against a 16KB slice. - Close stdin (DEVNULL) on both subprocess runners so an unexpected prompt
fails fast instead of hanging. - Add opt-in MCP_MODAL_ALLOWED_LOCAL_PATHS allowlist confining volume put/get
local paths; document confused-deputy tools in a README Security section.
Install
uvx mcp-modal@0.2.3 # run this exact version
claude mcp add mcp-modal -- uvx mcp-modal@0.2.3Also on PyPI: mcp-modal 0.2.3. The .whl and
.tar.gz attached below are the exact artifacts published to PyPI for this version.
Full changelog: v0.2.2...v0.2.3