@aefree/pi-safety-rails

Pi safety-focused extensions for shell execution and tool result hygiene.

Packages

Package details

extension

Install @aefree/pi-safety-rails from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@aefree/pi-safety-rails
Package
@aefree/pi-safety-rails
Version
0.1.4
Published
Aug 6, 2026
Downloads
122/mo · 13/wk
Author
aefree
License
MIT
Types
extension
Size
15.7 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./extensions/tool-output-redactor.ts",
    "./extensions/path-permissions.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Pi Safety Rails

Pi package containing safety-focused extensions for shell execution and tool-result hygiene.

Included extensions

  • tool-output-redactor
  • path-permissions

Purpose

This package provides practical safety rails for Pi:

  • redact token-like secrets from tool outputs before they reach the model/session
  • block sensitive filesystem paths through deny-only path permissions

Tool output redaction

  • Redacts token-like secrets from tool outputs before they are shown to the model/session.
  • Applies to text content and nested string fields in tool result details.

Path permissions

  • Deny-only path blocking for file-oriented tools.
  • Current v1 target tools:
    • read
    • write
    • edit
    • grep
    • find
    • ls
  • Configuration files:
    • user-global: ~/.pi/agent/path-permissions.json
    • project-local overlay: .pi/path-permissions.json
  • The first version intentionally ignores allow rules and only honors deny.

Example config with Windows and macOS paths:

{
  "permission": {
    "external_directory": {
      "C:/Windows/**": "deny",
      "/Users/yourname/Library/Keychains/**": "deny"
    },
    "edit": {
      "C:/Windows/**": "deny",
      "/Users/yourname/.ssh/**": "deny"
    }
  }
}

Replace yourname with the macOS account name. A trailing /** denies both the named directory and its descendants, without matching sibling prefixes.

Deny matching is case-insensitive on Windows and macOS, while denial messages retain the path's original display casing. macOS matching deliberately fails closed: it remains case-insensitive even on a case-sensitive APFS volume, so a differently cased path can be conservatively denied there. Linux matching remains case-sensitive.

Rules are evaluated against both the supplied path and its canonical filesystem destination. Existing symlinks and Windows junctions therefore cannot redirect access into a denied directory; for new files, the nearest existing ancestor is canonicalized before matching.

A copy also ships in this package as path-permissions.example.json.

Install

Install from npm:

pi install npm:@aefree/pi-safety-rails

For local development:

pi install <path-to-pi-safety-rails>

License

MIT. See LICENSE.