Skip to content

/cwd command to switch working directory without restarting session #12464

Description

@ignatremizov

What variant of Codex are you using?

CLI (TUI) custom fork off of 0.104.0

What feature would you like to see?

Add a /cwd slash command to change the working directory inside the current TUI session, with a policy-selection step in the same flow.

Current workflow is frustrating:

  1. Exit TUI
  2. cd into another repo/worktree
  3. codex resume ...
  4. Re-approve sandbox/policy for that directory

This is especially painful when iterating on many sibling forks. I want Codex to keep autonomous execution within the selected repo, but I do not want to grant blanket access to the parent directory just to avoid repeated approvals.

Proposed UX:

  • /cwd <path> to switch current working directory
  • /cwd with no args opens a picker/input modal
  • In the same flow, prompt for policy handling for the target directory:
    • apply target directory defaults (trust/project policy)
    • or keep current runtime policy override
  • Show a short confirmation line in transcript (new cwd + effective approval/sandbox policy)

Additional information

Related but not equivalent: /add-dir (#11747) expands access roots; it does not switch active cwd and policy context.

Short implementation sketch:

  1. Wire command + dispatch
  • codex-rs/tui/src/slash_command.rs: add SlashCommand::Cwd with description and inline args support.
  • codex-rs/tui/src/chatwidget.rs: dispatch /cwd and /cwd <path> via a new app event.
  1. Add app-level event and handler
  • codex-rs/tui/src/app_event.rs: add AppEvent::ChangeCwd { path: Option<String> }.
  • codex-rs/tui/src/app.rs: handle ChangeCwd by resolving/validating path, then rebuilding config with existing rebuild_config_for_cwd(...).
  1. Apply cwd + policy atomically
  • Reuse rebuilt config’s derived approval/sandbox defaults for target cwd.
  • Send Op::OverrideTurnContext { cwd: Some(...), approval_policy: Some(...), sandbox_policy: Some(...) } so core session state updates without restart.
  • Update in-memory TUI state (self.config, file-search root via file_search.update_search_dir(...), and chat widget config copy) so UI and behavior stay consistent.
  1. Prompt UI and tests
  • Reuse/extend codex-rs/tui/src/cwd_prompt.rs patterns for selection/confirmation.
  • Add tests in codex-rs/tui/src/chatwidget/tests.rs and codex-rs/tui/src/app.rs for command dispatch, path validation, and policy-application behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    TUIIssues related to the terminal user interface: text input, menus and dialogs, and terminal displayenhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions