@savagelands-net/pi-cwd
Pi extension that changes the real session working directory with /cwd and /cd
Package details
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>:
- resolve the target directory (
absolute,relative, and~are supported) - verify the target exists and is a directory
- fork the current session file into the target cwd using Pi's
SessionManager.forkFrom(...) - 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-sessionsessions 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. /cwdwith no argument only reports the current real cwd.