#!/bin/bash # omarchy:summary=Launch the default coding agent in a terminal # omarchy:args=[--inline] [prompt...] # omarchy:examples=omarchy launch agent | omarchy launch agent "Review this project" if [[ ${1:-} == "--inline" ]]; then inline=true shift else inline=false fi # Agents refuse to remember trust for $HOME, so launches from the keybinding or # menu start in the work directory instead of re-asking on every session. [[ $PWD == "$HOME" && -d $HOME/Work ]] && cd "$HOME/Work" agent=$(omarchy-default-agent) if omarchy-cmd-missing "$agent"; then echo "$agent is not installed. Choose an installed agent with: omarchy default agent " >&2 exit 1 fi if (($# > 0)); then prompt="$*" fi # Agents launched from the keybinding or menu run unattended, so each one starts # with its own spelling of "don't stop to ask". Pi has no approval prompts. case "$agent" in opencode) command=(opencode --auto) [[ -n ${prompt:-} ]] && command+=(--prompt "$prompt") ;; gemini) command=(gemini --yolo) [[ -n ${prompt:-} ]] && command+=(--prompt-interactive "$prompt") ;; copilot) command=(copilot --allow-all) [[ -n ${prompt:-} ]] && command+=(--interactive "$prompt") ;; crush) # --yolo belongs to the interactive command only; `crush run` never prompts. if [[ -n ${prompt:-} ]]; then command=(crush run "$prompt") else command=(crush --yolo) fi ;; claude | grok) command=("$agent" --permission-mode bypassPermissions) [[ -n ${prompt:-} ]] && command+=(-- "$prompt") ;; codex) command=(codex --dangerously-bypass-approvals-and-sandbox) [[ -n ${prompt:-} ]] && command+=(-- "$prompt") ;; omp) command=(omp --auto-approve) [[ -n ${prompt:-} ]] && command+=(-- "$prompt") ;; pi) command=(pi) [[ -n ${prompt:-} ]] && command+=(-- "$prompt") ;; *) echo "Unsupported default agent: $agent" >&2 exit 1 ;; esac if [[ $inline == "true" ]]; then exec "${command[@]}" else exec omarchy-launch-tui "${command[@]}" fi