codex_exec / LOCAL_SETUP.txt
yitongl's picture
Refresh migration docs for broad auto approval
9a2b78c
Raw
History Blame Contribute Delete
2.32 kB
# codex_exec local shell setup
# ============================
#
# This file is valid Bash. Copy it to $HOME/.bash_aliases, then reload your
# shell with:
#
# source $HOME/.bashrc
#
# It defines one command:
#
# runx
#
# runx launches $HOME/codex_auto_run.py with a tmux session prefix derived from
# the current directory. That keeps watcher state and logs separate per project.
#
# Install from a fresh clone:
#
# git clone https://huggingface.co/yitongl/codex_exec ~/codex_exec
# cp ~/codex_exec/codex_auto_run.py ~/codex_auto_run.py
# chmod +x ~/codex_auto_run.py
# cp ~/codex_exec/LOCAL_SETUP.txt ~/.bash_aliases
# source ~/.bashrc
#
# If you keep codex_auto_run.py somewhere other than $HOME/codex_auto_run.py,
# edit CODEX_AUTORUN_SCRIPT below before copying this file.
unalias runx 2>/dev/null || true
CODEX_AUTORUN_SCRIPT="${CODEX_AUTORUN_SCRIPT:-$HOME/codex_auto_run.py}"
_codex_autorun_dir_name() {
local rel
if [[ "$PWD" == "$HOME" ]]; then
rel="home"
elif [[ "$PWD" == "$HOME/"* ]]; then
rel="${PWD#"$HOME"/}"
else
rel="${PWD#/}"
fi
rel="${rel//\//-}"
rel="${rel//[^A-Za-z0-9_-]/-}"
while [[ "$rel" == *--* ]]; do
rel="${rel//--/-}"
done
while [[ -n "$rel" && ! "${rel:0:1}" =~ [A-Za-z0-9] ]]; do
rel="${rel:1}"
done
[[ -n "$rel" ]] || rel="home"
# codex_auto_run.py limits a session prefix to 48 characters. Leave room
# for the "-x" suffix.
if (( ${#rel} > 45 )); then
rel="${rel:0:28}-${rel: -16}"
fi
printf '%s' "$rel"
}
runx() {
local base
base="$(_codex_autorun_dir_name)"
python3 "$CODEX_AUTORUN_SCRIPT" --session-prefix "${base}-x" "$@"
}
# Examples:
#
# cd $HOME/code/my_project
# runx -p "Inspect the project, make the requested changes, and run tests."
#
# Enable Codex web search:
#
# runx -p "Research and complete the task." -- --search
#
# Disable broad MCP/app or directory-trust auto approval when needed:
#
# runx --no-approve-mcp -p "Work without app/tool auto approval."
# runx --no-auto-trust-directory -p "Work without automatic directory trust."
#
# Status, logs, and daemon control from the same project directory:
#
# runx --status
# tail -f ~/.runtime/$(_codex_autorun_dir_name)-x/approve-debug.log
# runx --stop-daemon