macOS

Installation on macOS (bash/zsh)

Tested on macOS 12+ (Monterey, Ventura) in Terminal or iTerm2. Assumes a user account with Administrator (sudo) rights.


1. Prerequisites

  • macOS 12 or later

  • Homebrew (optional but recommended)

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • Terminal: Built-in Terminal or iTerm2


2. Install Node.js (v22+) & npm

You can either use Homebrew or nvm for installing/managing Node versions:

Homebrew

To install using homebrew, run the following command in your preferred terminal:

brew update
brew install node@22
# Ensure in your PATH:
echo 'export PATH="/opt/homebrew/opt/node@22/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

nvm (Node Version Manager)

To install using nvm, first install nvm and load it in your environment.

  1. To install nvm run the following command:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
  2. To load nvm, add it to ~/.zshrc or ~/.bash_profile:

    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  3. Finally, install Node 22 by running the following command:

    nvm install 22
    nvm use 22
    node --version   # v22.x.x

To verify the installation, you can check by running the following command:

node --version   # expect v22.x.x or higher
npm --version

Handling Gatekeeper & Remote-Signed Files Issues

Issue: Cannot open ‘xyz’ because Apple cannot check it for malicious software.

  • Unblock downloaded files and allow apps from anywhere (requires sudo for allowing apps):

    xattr -dr com.apple.quarantine ~/Downloads/<file>
    sudo spctl --master-disable

⚠️ Use sparingly; re-enable with sudo spctl --master-enable


4. Install the P0 CLI

Note: A standalone CLI is available—bundling NodeJS so you can skip installing Node/npm/nvm. macOS support is live; Download it from the GitHub releases page: https://github.com/p0-security/p0cli/releases

npm install -g @p0security/cli

Issue: EACCES or permissions errors

  • Fix permissions and install PO CLI:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
npm install -g @p0security/cli

To verify the installation, you can run the following commands:

p0 --version
p0 help

5. macOS Shell Setup

For Shell setup, ensure /usr/local/bin (or /opt/homebrew/bin) is in your PATH:

```bash
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```

You can enable command-completion by running the following commands:

```bash
# in ~/.zshrc
autoload -Uz compinit && compinit
```

8. Proxy & Corporate Networks

Issue: npm install stalling or p0 login failing behind proxy

  • Configure npm and Shell Proxy Settings:

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

# Shell env vars:
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="http://proxy.company.com:8080"

Add these to ~/.zshrc so they persist.


9. Common Troubleshooting

Symptom
Cause & Fix

zsh: command not found: p0

– Restart your terminal to reload PATH.– Check npm root -g and ensure p0 is there.

EACCES “permission denied”

– Fix ownership: sudo chown -R $(whoami) $(npm config get prefix)/*

AWS CLI not found in scripts

– Ensure Homebrew’s bin (/usr/local/bin or /opt/homebrew/bin) is in your PATH.

CLI hangs on p0 login

– Check $BROWSER env var: export BROWSER=open– If using Safari, allow pop-ups.

Last updated