Skip to content

fix(codex): discover symlinked skills and reload MCP - #673

Open
fsioni wants to merge 1 commit into
coollabsio:mainfrom
fsioni:codex-symlinked-skills-and-mcp
Open

fix(codex): discover symlinked skills and reload MCP#673
fsioni wants to merge 1 commit into
coollabsio:mainfrom
fsioni:codex-symlinked-skills-and-mcp

Conversation

@fsioni

@fsioni fsioni commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

What changed

  • discover Codex skills installed as symlinked directories while preserving physical and nested skill discovery
  • avoid recursively following symlinked categories, preventing directory cycles
  • reload the persistent Codex app-server MCP registry before every thread start or resume
  • fail the turn explicitly if the MCP registry cannot be refreshed instead of continuing with stale tools
  • add regression coverage for symlinked skills, symlink cycles, OAuth HTTP MCP discovery, and the app-server reload protocol

Why

This fixes a regression introduced by #666 (feat(skills): discover skills in nested category directories). That change added recursive category discovery, but also explicitly rejected every symlinked directory and added a test asserting that symlinks must not be followed.

Codex CLI supports skill installations such as ~/.agents/skills/feature-flow -> ~/.claude/skills/feature-flow. After #666, Jean could still receive metadata for such a skill through explicit prompt injection, but excluded it from the invocable skill registry. Physical skill directories continued to work, which made the regression specific to symlink-based installations.

This PR restores Codex-compatible directory-symlink discovery without reverting the useful nested-category support from #666: only symlinks that directly resolve to a skill root are accepted, while symlinked categories are not traversed recursively.

Separately, Jean keeps codex app-server alive across sessions. Its MCP registry could therefore predate changes to ~/.codex/config.toml, causing configured servers such as ClickUp to be absent even though a fresh codex mcp list reported them as enabled.

Validation

  • cargo test --manifest-path jean-core/Cargo.toml — 1080 passed, 1 ignored on upstream main
  • targeted rustfmt --check for all changed Rust files
  • manual Codex app-server protocol check: config/mcpServer/reload succeeded and mcpServerStatus/list included ClickUp
  • manual Jean dev smoke test for symlinked skill discovery

bun run check:all currently stops on the existing unrelated lint error in src/components/chat/ChatInput.test.tsx:37 (@typescript-eslint/consistent-type-imports).

@fsioni
fsioni marked this pull request as ready for review August 11, 2026 13:52
Copilot AI lite review requested due to automatic review settings August 11, 2026 13:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants