Commit Graph

16 Commits

  • fix: raw-exec-process-group.test improve reliability and error handling (#280)
    description:
    
    Makes the test verifying process group termination more
    robust against timing variations. It increases a delay slightly 
    and correctly handles the scenario where the test process might 
    be aborted before it can output the grandchild PID
    
    current:
    
    ![image](https://github.com/user-attachments/assets/6dd7a9b4-b578-433d-a3db-c0c8c71950d9)
    
    fixed:
    
    ![image](https://github.com/user-attachments/assets/c9a1ffdf-3001-4563-b486-fbefb1830a8b)
  • feat: add /compact (#289)
    Added the ability to compact. Not sure if I should switch the model over
    to gpt-4.1 for longer context or if keeping the current model is fine.
    Also I'm not sure if setting the compacted to system is best practice,
    would love feedback 馃槃
    
    Mentioned in this issue: https://github.com/openai/codex/issues/230
  • feat: add notifications for MacOS using Applescript (#160)
    yolo'ed it with codex. Let me know if this looks good to you.
    
    https://github.com/openai/codex/issues/148
    
    tested with:
    ```
    npm run build:dev
    ```
    
    <img width="377" alt="Screenshot 2025-04-16 at 18 12 01"
    src="https://github.com/user-attachments/assets/79aa799b-b0b9-479d-84f1-bfb83d34bfb9"
    />
  • add support for -w,--writable-root to add more writable roots for sandbox (#263)
    This adds support for a new flag, `-w,--writable-root`, that can be
    specified multiple times to _amend_ the list of folders that should be
    configured as "writable roots" by the sandbox used in `full-auto` mode.
    Values that are passed as relative paths will be resolved to absolute
    paths.
    
    Incidentally, this required updating a number of the `agent*.test.ts`
    files: it feels like some of the setup logic across those tests could be
    consolidated.
    
    In my testing, it seems that this might be slightly out of distribution
    for the model, as I had to explicitly tell it to run `apply_patch` and
    that it had the permissions to write those files (initially, it just
    showed me a diff and told me to apply it myself). Nevertheless, I think
    this is a good starting point.
  • feat: add command history persistence (#152)
    This PR adds a command history persistence feature to Codex CLI that:
    
    1. **Stores command history**: Commands are saved to
    `~/.codex/history.json` and persist between CLI sessions.
    2. **Navigates history**: Users can use the up/down arrow keys to
    navigate through command history, similar to a traditional shell.
    3. **Filters sensitive data**: Built-in regex patterns prevent commands
    containing API keys, passwords, or tokens from being saved.
    4. **Configurable**: Added configuration options for history size,
    enabling/disabling history, and custom regex patterns for sensitive
    content.
    5. **New command**: Added `/clearhistory` command to clear command
    history.
    
      ## Code Changes
    
    - Added `src/utils/storage/command-history.ts` with functions for
    history management
      - Extended config system to support history settings
      - Updated terminal input components to use persistent history
      - Added help text for the new `/clearhistory` command
      - Added CLAUDE.md file for guidance when working with the codebase
    
      ## Testing
    
      - All tests are passing
    - Core functionality works with both input components (standard and
    multiline)
    - History navigation behaves correctly at line boundaries with the
    multiline editor
  • fix(security): Shell commands auto-executing in 'suggest' mode without permission (#197)
    ## Problem
    
    There's a security vulnerability in the current implementation where
    shell commands are being executed without requesting user permission
    even when in 'suggest' mode. According to our documentation:
    
    > In **Suggest** mode (default): All file writes/patches and **ALL
    shell/Bash commands** should require approval.
    
    However, the current implementation in `approvals.ts` was auto-approving
    commands deemed "safe" by the `isSafeCommand` function, bypassing the
    user permission requirement. This is a security risk as users expect all
    shell commands to require explicit approval in 'suggest' mode.
    
    ## Solution
    
    This PR fixes the issue by modifying the `canAutoApprove` function in
    `approvals.ts` to respect the 'suggest' mode policy for all shell
    commands:
    
    1. Added an early check at the beginning of `canAutoApprove` to
    immediately return `{ type: "ask-user" }` when the policy is `suggest`,
    regardless of whether the command is considered "safe" or not.
    
    2. Added a similar check in the bash command handling section to ensure
    bash commands also respect the 'suggest' mode.
    
    3. Updated tests to verify the new behavior, ensuring that all shell
    commands require approval in 'suggest' mode, while still being
    auto-approved in 'auto-edit' and 'full-auto' modes when appropriate.
    
    ## Testing
    
    All tests pass, confirming that the fix works as expected. The updated
    tests verify that:
    - All commands (even "safe" ones) require approval in 'suggest' mode
    - Safe commands are still auto-approved in 'auto-edit' mode
    - Bash commands with redirects still require approval in all modes
    
    This change ensures that the behavior matches what's documented and what
    users expect, improving security by requiring explicit permission for
    all shell commands in the default 'suggest' mode.
  • fix: allow continuing after interrupting assistant (#178)
    ## Description
    This PR fixes the issue where the CLI can't continue after interrupting
    the assistant with ESC ESC (Fixes #114). The problem was caused by
    duplicate code in the `cancel()` method and improper state reset after
    cancellation.
    
    ## Changes
    - Fixed duplicate code in the `cancel()` method of the `AgentLoop` class
    - Added proper reset of the `currentStream` property in the `cancel()`
    method
    - Created a new `AbortController` after aborting the current one to
    ensure future tool calls work
    - Added a system message to indicate the interruption to the user
    - Added a comprehensive test to verify the fix
    
    ## Benefits
    - Users can now continue using the CLI after interrupting the assistant
    - Improved user experience by providing feedback when interruption
    occurs
    - Better state management in the agent loop
    
    ## Testing
    - Added a dedicated test that verifies the agent can process new input
    after cancellation
    - Manually tested the fix by interrupting the assistant and confirming
    that new input is processed correctly
    
    ---------
    
    Signed-off-by: crazywolf132 <crazywolf132@gmail.com>
  • fix(text-buffer): correct word deletion logic for trailing spaces (Ctrl+Backspace) (#131)
    ## Description
    This fix resolves a bug where Ctrl+Backspace (hex 0x17) deletes the
    entire line when the cursor is positioned after a trailing space.
    
    ## Problem
    When the user has a line like "I want you to refactor my view " (with a
    space at the end) and the cursor is after that space, Ctrl+Backspace
    deletes the entire line instead of just removing the word "view".
    
    ## Solution
    - Added a check to detect if the cursor is after spaces
    - Modified the logic to delete only one space at a time in this case
    - Added a unit test to verify this behavior
    
    ## Tests
    All tests pass, including the new test that verifies the corrected
    behavior.
    
    ---------
    
    Signed-off-by: Alpha Diop <alphakhoss@gmail.com>
    Co-authored-by: Thibault Sottiaux <tibo@openai.com>
  • (feat) basic retries when hitting rate limit errors (#105)
    * w
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
    
    * w
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
    
    * w
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
    
    * w
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
    
    * w
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
    
    ---------
    
    Signed-off-by: Thibault Sottiaux <tibo@openai.com>
  • (feat) gracefully handle invalid commands (#79)
    * handle invalid commands
    * better test
    * format
  • (fix) o3 instead of o3-mini (#37)
    * o3 instead of o3-mini
  • Initial commit
    Signed-off-by: Ilan Bigio <ilan@openai.com>