Aliases

Aliases let you define short names for frequently used inner commands directly in your config file. They work like git aliases: the alias name is expanded into the configured command before argument parsing.

Defining aliases

Aliases are declared in the [aliases] table of ~/.inner/config.toml (global) or .inner/config.toml (local, directory-level):

[aliases]
review  = "run --profile code-review"
chat    = "run --profile claude-interactive"
oneshot = "run --profile claude-one-shot"

Using aliases

Once defined, the alias name works as a top-level inner subcommand:

inner review                      # → inner run --profile code-review
inner chat                        # → inner run --profile claude-interactive
inner oneshot -- fix the bug      # → inner run --profile claude-one-shot -- fix the bug

Any flags or extra arguments you pass after the alias name are appended to the expansion:

inner review --network            # → inner run --profile code-review --network
inner review -- "add unit tests"  # → inner run --profile code-review -- add unit tests

Global vs local aliases

Aliases follow the same global/local precedence as the rest of the config:

When the same alias key appears in both files, the local value wins.

# ~/.inner/config.toml
[aliases]
review = "run --profile code-review"   # used everywhere

# /my-project/.inner/config.toml
[aliases]
review = "run --profile my-project-review"  # used only inside /my-project

Precedence rules

Token expansion

The ${workspaces_path} token is expanded in alias values to the effective workspaces_path configured in the global or local config.toml. This lets you reference workspace directories without hardcoding absolute paths:

# ~/.inner/config.toml  (or .inner/config.toml for per-project)
workspaces_path = "~/Projects/workspaces"

[aliases]
myproject = "run -p myproject-profile"

The token is expanded when the alias is looked up, before the command is parsed. If workspaces_path is not configured the token is left as-is (which will cause an error at runtime if bwrap receives it as a path).

Limitations