@savagelands-net/pi-cwd

Pi extension that changes the real session working directory with /cwd and /cd

Packages

Package details

extension

Install @savagelands-net/pi-cwd from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@savagelands-net/pi-cwd
Package
@savagelands-net/pi-cwd
Version
0.1.2
Published
Jun 5, 2026
Downloads
not available
Author
savagemindz
License
MIT
Types
extension
Size
12.2 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

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

README

@savagelands-net/pi-cwd

Pi extension that changes Pi's real session working directory from inside Pi.

Unlike virtual-cwd extensions that rewrite tool arguments while leaving ctx.cwd unchanged, this extension forks the current session into a new session whose header has the target cwd, then switches Pi to that session. After the switch, ctx.cwd is the new directory.

Install

pi install git:github.com/savagelands-net/pi-cwd

Then restart Pi or run:

/reload

Usage

/cwd                    # show the current real cwd
/cd                     # alias: show the current real cwd
/cwd /tmp               # absolute path
/cwd ../other-project   # relative to the current real cwd
/cwd ~/repos/project    # tilde expansion
/cd ~/repos/project     # alias

Directory arguments support tab completion.

How it works

/cwd <dir> and /cd <dir>:

  1. resolve the target directory (absolute, relative, and ~ are supported)
  2. verify the target exists and is a directory
  3. fork the current session file into the target cwd using Pi's SessionManager.forkFrom(...)
  4. switch Pi to the newly forked session with ctx.switchSession(...)

Because the target cwd is stored in the new session header, the cwd survives:

  • /reload
  • quitting and resuming the session
  • built-in tools and extension code that read ctx.cwd

Notes

  • This requires a persisted session. Ephemeral --no-session sessions cannot be moved because there is no source session file to fork.
  • The command creates a new session file each time the cwd changes. The new session records the previous session as parentSession.
  • /cwd with no argument only reports the current real cwd.