DEV Community

Cover image for Codex CLI को osFoundry worker के रूप में चलाना
BBT for BBT हिन्दी

Posted on

Codex CLI को osFoundry worker के रूप में चलाना

इस guide के अंत तक osFoundry desktop app में एक agent का model cli:codex:agent होगा। जब काम उस agent तक पहुँचता है, तो app आपके Mac पर आपके अपने ChatGPT sign-in के साथ codex exec शुरू करता है। Run उसी folder में होता है जिसकी अनुमति आपने दी है। Codex जो कुछ वापस बताता है, यानी उसका reasoning, उसके चलाए commands और उसका final message, वह osFoundry run में lines के रूप में दिखता है। इस पूरी प्रक्रिया में कहीं भी OpenAI API key की ज़रूरत नहीं पड़ती।

कौन क्या करता है

Codex CLI osFoundry
Login उसका अपना ChatGPT sign-in (codex login), जिसे Codex ही store करता है इसे कभी नहीं देखता। Child के environment से CODEX_API_KEY, OPENAI_API_KEY और OPENAI_BASE_URL हटा देता है ताकि run subscription पर ही रहे
Model calls codex process से सीधे OpenAI तक जाते हैं Cost को 0.0 के रूप में record करता है (subscription, unmetered)
Tools उसका अपना shell और file edits, working folder के अंदर उसके अपने tools (जैसे memory_search), 127.0.0.1 पर एक loopback MCP bridge से serve होते हैं, सिर्फ़ तब जब git worktree run को isolate करता है
Approvals Run के बीच कोई नहीं: exec non-interactive है, approval_policy="never" Bridge से होकर आने वाली हर tool call orchestrator::execute_tool और उसके policy gates से गुज़रती है
Output stdout पर हर completed item के लिए एक JSON event (--json) हर event को progress line या answer text में बदलता है; errors के लिए stderr का आख़िरी हिस्सा रखता है
आपकी files Folder या worktree में पढ़ी और लिखी जाती हैं Folder चुनता है: Code surface की repository, वरना आपका पहला allowed local folder

Setup

  1. Codex CLI install करें और एक बार sign in करें। osFoundry binary को PATH में, ~/.codex/bin में और /Applications/Codex.app के अंदर ढूँढता है (cask install उसे Contents/Resources/codex में रखता है, जहाँ which codex को कुछ नहीं मिलता)।
   codex login
Enter fullscreen mode Exit fullscreen mode
  1. Header में key icon खोलें, जिसका tooltip API Keys (BYOK) है, और External AI tab पर जाएँ। Codex row में Installed, एक No live stream badge और autonomous model id दिखते हैं। Codex का कोई chat id नहीं है, इसलिए सिर्फ़ एक id दिखता है:
   Codex   Installed   No live stream   Enabled
   cli:codex:agent (autonomous)
   osFoundry tools require git-worktree isolation for Codex (it trades its
   own sandbox for git safety). Point it at a git repo folder.
Enter fullscreen mode Exit fullscreen mode

External AI tab में Claude Code और Codex

उदाहरण: External AI tab में Claude Code और Codex

अगर आपने अभी तक sign in नहीं किया है, तो Sign in button एक terminal खोलता है जो codex login चलाता है।

  1. Verify sign-in पर click करें। यह उसी builder से एक बहुत छोटा completion चलाता है जिसका इस्तेमाल असली runs करते हैं:
   codex exec "Reply with the single word: ok" \
     --json --skip-git-repo-check --ignore-user-config --ignore-rules \
     -s read-only -c 'approval_policy="never"'
Enter fullscreen mode Exit fullscreen mode

--ignore-rules तभी जोड़ा जाता है जब codex exec --help में वह listed हो। osFoundry binary से पूछता है, क्योंकि पुराने builds इस flag को reject करते हैं और पूरा run fail हो जाता है।

  1. Agent को एक folder दें। Settings → Local Folders में एक folder जोड़ें। अगर आप चाहते हैं कि Codex osFoundry के अपने tools तक भी पहुँचे, तो उस folder को git repository बनाएँ और Code surface पर Enable for this workspace पर click करें। इसके बाद हर run को अपनी branch और अपनी working copy मिलती है।

  2. Studio में agent खोलें और Model Preference set करें। Picker में Codex, CLI agents section में cli:codex:agent के रूप में दिखता है (provider "External AI (subscription)")। अगर agent को worker steps लेने हैं, तो Runtime Role को worker पर set करें।

जब काम सौंपा जाता है, तो command ऐसा दिखता है। Worktree न होने पर Codex का अपना sandbox बना रहता है:

codex exec "<system prompt>

User: <task>" \
  --json --skip-git-repo-check --ignore-user-config --ignore-rules \
  -C /path/to/folder -s workspace-write -c 'approval_policy="never"'
Enter fullscreen mode Exit fullscreen mode

Worktree होने पर sandbox flag बदल दिया जाता है और bridge जोड़ दिया जाता है:

codex exec "<system prompt>

User: <task>" \
  --json --skip-git-repo-check --ignore-user-config --ignore-rules \
  -C /path/to/worktree \
  --dangerously-bypass-approvals-and-sandbox \
  -c 'mcp_servers.osfoundry.url="http://127.0.0.1:<port>/mcp"' \
  -c 'mcp_servers.osfoundry.http_headers={Authorization="Bearer <per-run token>"}'
Enter fullscreen mode Exit fullscreen mode

Codex में system prompt जोड़ने का कोई flag नहीं है, इसलिए osFoundry agent का system prompt बातचीत के आगे रखता है, बीच में एक blank line छोड़कर। पिछले turns उसके बाद User: / Assistant: transcript के रूप में आते हैं।

एक run

उदाहरण। ये वे event lines हैं जो Codex लिखता है, और वे lines जो osFoundry उनसे render करता है। Text सिर्फ़ समझाने के लिए है, लेकिन event types और line formats वही हैं जिन्हें code map करता है।

$ codex exec … --json
{"type":"item.completed","item":{"type":"reasoning","text":"Check what the tests cover first."}}
{"type":"item.completed","item":{"type":"mcp_tool_call","server":"osfoundry","tool":"memory_search"}}
{"type":"item.completed","item":{"type":"command_execution","command":"npm test"}}
{"type":"item.completed","item":{"type":"file_change","path":"src/date.ts","change":"edit"}}
{"type":"item.completed","item":{"type":"agent_message","text":"Fixed the off-by-one in parseRange; 42 tests pass."}}
{"type":"turn.completed","usage":{"input_tokens":…,"cached_input_tokens":…,"output_tokens":…}}

osFoundry run
  Thinking: Check what the tests cover first.
  Using memory_search…
  Using shell — npm test
  Edited src/date.ts
  Fixed the off-by-one in parseRange; 42 tests pass.
Enter fullscreen mode Exit fullscreen mode

Codex किसी bridged tool का नाम दो fields में देता है, server और tool, इसलिए line में mcp__osfoundry__ prefix के बिना सिर्फ़ memory_search दिखता है। Answer tokens के रूप में नहीं, बल्कि पूरे agent_message items के रूप में आता है। Progress lines एक-एक करके तब भी दिखती हैं जब Codex अभी काम कर रहा होता है। हर message का text तभी दिखता है जब Codex वह message पूरा कर लेता है। Token counts turn.completed से आते हैं, जहाँ input_tokens में cached हिस्सा शामिल नहीं होता, इसलिए context size पाने के लिए osFoundry cached_input_tokens को वापस जोड़ता है।

सीमा कहाँ है

cli:codex नाम का कोई chat mode नहीं है। Codex के config में ऐसा कोई switch नहीं है जो उसका shell tool बंद कर दे, इसलिए Codex से किया गया "tool-less completion" भी आख़िरकार shell वाला agent ही होगा। osFoundry इसे चुपचाप चलाने की जगह chat id को ही reject कर देता है: "codex has no tool-less chat mode — use 'cli:codex:agent' for an autonomous run instead."

-s filesystem और commands का sandbox है। workspace-write यह सीमित करता है कि Codex कहाँ लिख सकता है और उसके commands क्या कर सकते हैं। यह इस पर रोक नहीं लगाता कि model कौन से tools call कर सकता है, और Codex में --disallowedTools जैसा कुछ नहीं है। इसी वजह से, जब आप Codex को किसी channel में जोड़ते हैं, तो Add agent sheet बताती है कि इस harness पर tool scope enforce नहीं किया जा सकता।

osFoundry के tools को worktree चाहिए। Non-interactive exec में Codex हर MCP tool call को cancel कर देता है, जब तक approvals और sandbox दोनों bypass न किए जाएँ। Per-tool approval modes, trusted projects और approval_policy="never", ये सब भी cancel ही करते हैं। इसलिए app एक ही trade करता है: वह Codex का OS sandbox सिर्फ़ तब छोड़ता है जब उसकी जगह git isolation ले लेता है। Worktree के बिना run -s workspace-write पर ही रहता है, bridge नहीं जोड़ा जाता, और run में एक line यह बता देती है।

आपका अपना Codex setup इससे बाहर रहता है। --ignore-user-config ~/.codex/config.toml को skip करता है, इसलिए जो MCP servers आपने अपने लिए configure किए हैं, वे osFoundry run में शामिल नहीं होते। Auth फिर भी CODEX_HOME से load होता है। --ignore-rules .rules execpolicy files को भी बाहर रखता है।

हर run की एक wall-clock सीमा है: autonomous run के लिए 1,800 seconds, sign-in probe के लिए 300 seconds। समय ख़त्म होने पर child process को drop करके kill कर दिया जाता है।

आगे क्या

Agent को एक छोटी git repository दें, workspace के लिए code agents enable करें, और उसे ऐसा task दें जिसमें shell command और osFoundry की memory, दोनों की ज़रूरत हो। इस तरह आप Using shell और Using memory_search… को एक ही run में दिखते हुए देख सकते हैं। Model Preference कहाँ है, यह Studio agents page पर दिखाया गया है, और desktop build download page पर है।

Top comments (0)