๋ค ๋๋๋ฉด Codex CLI๋ ์๊ธฐ๊ฐ ์ง์ ํ๋ฉด ์ ๋๋ ์ผ์ osFoundry์ ์ธ์ (์์ด์ ํธ, ํ, ๋ฃจํ ์ค ํ๋)์ ๋๊ธธ ์ ์๊ฒ ๋๋ค. ๋๊ธฐ๋ ๊ฑด ์ธ ๊ฐ์ง๋ค. ๋ชฉํ, ์ง๊ธ๊น์ง ํ์ ํ ๋ด์ฉ์ ์์ฝ, ๋๋ ค๋ฐ๊ณ ์ถ์ ๊ฒฐ๊ณผ๋ฌผ. ์ธ์ ์ค๋ํํ ์๋ฆผ์ด ๊ฐ๊ณ , ์ค๋๋ Accept and run์ด๋ Decline์ ๋๋ฅธ๋ค. run์ด ๋๋๋ฉด Codex๋ ๊ฐ์ ํฐ๋ฏธ๋ ์ธ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ณ ํ๋ ์ผ์ ์ด์ด ๊ฐ๋ค. Runner ์๋ฆฌ๋ฅผ ์ค ๋๋ฉด ํด๋ฆญ ์์ด ์ํ์ด ๊ฑธ๋ฆฐ run์ ์ง์ ๋์ธ ์๋ ์๋ค.
๋๊ฐ ๋ญ ํ๋
| Codex CLI | osFoundry | |
|---|---|---|
| ๋ก๊ทธ์ธ | ๋ด Codex ๋ก๊ทธ์ธ ๊ทธ๋๋ก. osFoundry OAuth ํ ํฐ๋ Codex๊ฐ ๋ค๊ณ ์๋ค | ์ํฌ์คํ์ด์ค ํ๋์ ์ฒดํฌํ ์ค์ฝํ์ ๋ํด ์ฐ๊ฒฐ์ ํ ๋ฒ ์น์ธ |
| ๋ฟ๋ ๋ฒ์ | ์ด๋๋ฐ์ ์ธ์
๋ง. *_session_* ํด 7๊ฐ๋ก ๋ค๋ฃฌ๋ค |
์๋ฆฌ๊ฐ ์ ํ๋ค. Viewer๋ ์ฝ๊ธฐ๋ง, Contributor๋ ๋ ธํธ์ ํธ๋์คํ ์ ์, Runner๋ run ์์ฒญ๊น์ง |
| ๋๊ฐ ์ผํ๋ | Codex๋ ๋ก์ปฌ ์ ์ฅ์์์ ํ๋ ์์ ์ ๊ณ์ | ์ธ์ ์ด ์๊ธฐ ์์ด์ ํธ, ํด, ๋ชจ๋ธ ์ค์ ์ผ๋ก ๋๋ค |
| ๋๊ฐ ์น์ธํ๋ | ์ฐ๊ธฐ ํด ์ ์ Codex๊ฐ ํ์ธ(default_tools_approval_mode = "writes") |
ํธ๋์คํ๋ ์ค๋์ Accept and run์ ๊ธฐ๋ค๋ฆฐ๋ค. Runner ์๋ฆฌ๋ request_session_run์ ๋ํ ์ฌ์ ์น์ธ |
| ์ผ๋ง๋ ๋๋ | ํธ์ถ์ max_rounds 1~10 |
์ค๋์๊ฒ "Up to N rounds on your agent runtime"์ผ๋ก ๋ณด์ธ๋ค |
| ๋์์ค๋ ๊ฒ | ์ด ์ฐ๊ฒฐ์ด ์์ํ ํ์คํฌ์ ์ํ์ ๊ฒฐ๊ณผ, ์ด ์ฐ๊ฒฐ ์์ผ๋ก ์จ ๋ ธํธ | ์ธ์ ๋ด๋ถ ์์ด์ ํธ ๋ถ์์ ๋ฐ์ผ๋ก ์ ๋๊ฐ๋ค |
์ค์
1. ์ฐ๊ฒฐ ๋ง๋ค๊ธฐ
osFoundry ํค๋์ ์ด์ ์์ด์ฝ์ ๋๋ฌ Connected ํญ("Connected agents")์ ์ฐ๋ค. "Connect in three steps" ์๋์์ Assistant๋ฅผ Other MCP client๋ก ๋๊ณ , Display name์ Codex CLI ๊ฐ์ ์ด๋ฆ์ ๋ฃ๊ณ Add assistant๋ฅผ ๋๋ฅธ๋ค. ์ด ์ด๋ฆ์ ํธ๋์คํ๋ง๋ค ์ค๋ํํ
๋ณด์ด๋๊น ์์๋ณด๊ธฐ ์ฌ์ด ๊ฑธ๋ก ์ง๋ ๊ฒ ์ข๋ค.
์์: Codex CLI ์ฐ๊ฒฐ์ด ์๋ Connected agents ํญ
2. Codex์ ์๋ฒ ๋ถ์ด๊ธฐ(run ์ค์ฝํ ํฌํจ)
codex mcp add osfoundry --url https://api.osfoundry.io/api/v1/external-mcp
๊ทธ๋ค์ ~/.codex/config.toml์ ์ด์ด์ ์ด๋ฒ ์ฉ๋์ ๋ง๊ฒ ์ค์ธ๋ค.
[mcp_servers.osfoundry]
url = "https://api.osfoundry.io/api/v1/external-mcp"
scopes = ["osfoundry:read", "osfoundry:write", "osfoundry:run"]
default_tools_approval_mode = "writes"
enabled_tools = [
"list_granted_resources",
"list_project_resources",
"read_session_state",
"read_session_task_result",
"read_session_mail",
"post_session_note",
"propose_session_handoff",
"cancel_session_handoff",
"request_session_run",
]
request_session_run์ ํ์ํ ๊ฒ osfoundry:run์ด๋ค. ์ ์๋ง ์ํฌ ๊ฑฐ๋ฉด ๋นผ ๋๋ฉด ๋๋ค. ํธ๋์คํ์ ๋
ธํธ๋ osfoundry:write, ์ฝ๊ธฐ ํด ์ธ ๊ฐ๋ osfoundry:read๋ฉด ์ถฉ๋ถํ๋ค. "writes"๋ก ๋๋ฉด ์ฝ๊ธฐ ์ ์ฉ์ด ์๋ ํด ๋ค ๊ฐ ์์์๋ง Codex๊ฐ ํ์ธ์ ๋ฐ๊ณ , ์ฝ๊ธฐ ํด์ ๊ทธ๋ฅ ํต๊ณผํ๋ค.
3. ๋ก๊ทธ์ธ
codex mcp login osfoundry
๋ธ๋ผ์ฐ์ ์ osFoundry์ "Connect an agent" ํ์ด์ง๊ฐ ๋ฌ๋ค. ์ ์ค์ฝํ๋ผ๋ฉด "Requested capabilities"๊ฐ ์ธ ์ค์ด๊ณ , ์ธ ๋ฒ์งธ ์ค์ด "Run sessions where you grant a runner role"์ด๋ค. ์ํฌ์คํ์ด์ค๋ฅผ ๊ณ ๋ฅด๊ณ "Use pending: Codex CLI"๋ฅผ ์ ํํ ๋ค์, ์น์ธ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ผ๊ณ Connect๋ฅผ ๋๋ฅธ๋ค.
4. ์ธ์ ์ด ์๋ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ ์ถ๊ฐ
Connected ํญ์ผ๋ก ๋์์ค๋ฉด ์ฐ๊ฒฐ์ด "Connected."๋ก ๋ฐ๋์ด ์๋ค. Projects์์ ํ๋ก์ ํธ๋ฅผ ๊ณ ๋ฅด๊ณ Add to project๋ฅผ ๋๋ฅธ๋ค. ์ด์ ํ๋ก์ ํธ ์์ ๋์ ์ธ์ ์ด ๋ณด์ธ๋ค. ๋ค๋ง ์์ง ์ด๋ ์ธ์ ์๋ ์ธ ์๋ ์๋ค.
์์: ํ๋ก์ ํธ ํ๋๋ฅผ ์ถ๊ฐํ Projects ์น์
5. ์ธ์ ์ ์๋ฆฌ ์ฃผ๊ธฐ
์๋์ชฝ์ "Agent, Team, and Loop sessions"๊ฐ ์๋ค. ์ค๋ช
๋ฌธ์ด ๊ณง ์คํ์ด๋ค. Contributor๋ก ์ด๋ํ๋ฉด ๋
ธํธ ์์ฑ๊ณผ ํธ๋์คํ ์ ์์ ํ ์ ์๊ณ , Runner๋ฉด run ์์ฒญ๊น์ง ๋๋ค. ๊ทธ๋๋ ํธ๋์คํ๋ ์ฌ์ ํ ์ธ์
์ค๋ ์น์ธ์ด ํ์ํ๋ค.
Agent, Team, and Loop sessions
[ Team session โพ ] [ Release desk โพ ] [ Contributor โพ ] [ Save role ]
์์: Agent, Team, and Loop sessions ์น์ ์์ Codex CLI๋ฅผ ํ ์ธ์ ์ Contributor๋ก ๋ ํ๋ฉด
์ธ์ ๋ชฉ๋ก์๋ ์ด ์ฐ๊ฒฐ์ ์ถ๊ฐํ ํ๋ก์ ํธ์ ์ธ์ ๋ง ๋์จ๋ค. ์ข ๋ฅ, ์ธ์ , ์ญํ ์ ๊ณ ๋ฅด๊ณ Save role์ ๋๋ฅธ๋ค. ์ฒ์์ Contributor๋ก ์์ํ๋ ๊ฒ ๋ฌด๋ํ๋ค. ๋์ค์ ๊ฐ์ ์ธ์ ์ Runner๋ฅผ ์ ์ฅํ๋ฉด ์ญํ ์ด ๋ฐ๋๋ค.
์ค์ ๋ก ๋๋ ค ๋ณด๋ฉด
์ด ๊ธ์ ์ด ๋จธ์ ์ Codex๊ฐ ์์ด์ ์๋๋ ์๋ฎฌ๋ ์ด์
ํ ์์๋ค. ํด ์ด๋ฆ๊ณผ ์ธ์ ์ด๋ฆ์ ๋ผ์ด๋ธ ์๋ฒ๊ฐ tools/list๋ก ๋๋ ค์ค ๊ฒ์, Codex๊ฐ MCP ํด์ ๋ถ์ด๋ mcp__osfoundry__๋ฅผ ๋ํ ๊ฑฐ๋ค. ์ ์ฅ์, ์ธ์
, ๊ฐ์ ์ ๋ถ ๋ฐ๋ชจ๋ค.
Example (simulated)
> The CSV export fix is merged. Hand the customer note and the KB update
to the osFoundry Release desk team, then tell me what they wrote.
โข mcp__osfoundry__list_granted_resources {}
โ 1 project: "Billing v2"
โข mcp__osfoundry__list_project_resources {"project_id": "โฆ", "resource_type": "team_session",
"search": "release"}
โ team_session "Release desk"
โข mcp__osfoundry__propose_session_handoff {
"session_type": "team_session", "session_id": "โฆ",
"goal": "Write the customer note for the CSV export fix and update the KB article on exports.",
"context_summary": "Exports over 10k rows were cut at 10,000. Fixed in PR #212 (streams rows, no cap). Affects plans with scheduled exports. No data was lost; re-running an export now returns all rows.",
"requested_output": "Draft note (<120 words) and the KB article diff, for review.",
"max_rounds": 4, "idempotency_key": "codex-csv-212-note"}
[Codex asks: allow this tool call? โ yes]
โ handoff pending owner review
(in osFoundry the owner opens "Codex CLI requests a handoff" โ Review handoff
โ Handoffs โ Outside assistant requests โ Accept and run)
โข mcp__osfoundry__read_session_state {"session_type": "team_session", "session_id": "โฆ"}
โ running, recent task "Requested by an outside assistant"
โข mcp__osfoundry__read_session_task_result {"session_type": "team_session",
"session_id": "โฆ", "task_id": "โฆ"}
โ completed: draft note + KB diff
โข mcp__osfoundry__post_session_note {"session_type": "team_session", "session_id": "โฆ",
"subject": "Thanks, one correction",
"body": "The fix shipped in 3.18.2, not 3.18.1.", "idempotency_key": "codex-csv-212-fix"}
[Codex asks: allow this tool call? โ yes]
The Release desk drafted a 96-word note and a KB diff that replaces the
"exports are capped at 10,000 rows" paragraph. I posted a version
correction back to the session.
์ค๋ ์ชฝ ์กฐ์์ ์งง๋ค. ์๋ฆผ์ "Codex CLI requests a handoff"์ "Review the request in Release desk."๊ฐ ๋จ๊ณ , Review handoff ๋ฒํผ์ ๋๋ฅด๋ฉด ์ธ์ ์ Handoffs ํญ์ด ์ด๋ฆฐ๋ค. "Outside assistant requests" ์๋์ goal์ด ์ ๋ฌธ์ผ๋ก ๋ณด์ด๊ณ , "Context and expected output"์ ํผ์น๋ฉด ์์ฝ๊ณผ ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋์จ๋ค. "Up to 4 rounds on your agent runtime" ํ ์ค๋ก ์ด run์ด ์ด๋๊น์ง ๋์ง ์ ์ ์๋ค. Accept and run์ ๋๋ฅด๋ฉด ํ์ ๋ค์ด๊ฐ๊ณ ("Handoff accepted and run queued"), Decline์ด๋ฉด ๋์ด๋ค.
์์: Codex CLI requests a handoff ์๋ฆผ๊ณผ Review handoff ๋ฒํผ
์์: ์ธ์ Handoffs ํญ์ ๋ค์ด์จ ์ธ๋ถ ์ด์์คํดํธ ์์ฒญ๊ณผ Accept and run, Decline ๋ฒํผ
์๋ชป ๋ณด๋์ผ๋ฉด handoff_id๋ฅผ ๋ฃ์ด cancel_session_handoff๋ฅผ ํธ์ถํ๋ฉด ๊ฑฐ๋ ์ ์๋ค. ์ค๋๊ฐ ์น์ธํ๊ธฐ ์ ๊น์ง๋ง์ด๋ค.
์ด๋๊น์ง์ธ๊ฐ
์ ์๊ณผ run์ ์ผ๋ถ๋ฌ ๋ค๋ฅธ ํด์ด๋ค. propose_session_handoff๋ ์ฌ๋ํํ
๋ฌป๋ ์ฉ๋๋ค. osfoundry:write์ Contributor ์๋ฆฌ๊ฐ ํ์ํ๊ณ , ์ฌ๋์ด ์ฝ์ context_summary์ requested_output์ด ํ์๊ณ , ์ค๋๊ฐ ๋๋ฅด๊ธฐ ์ ์ ์๋ฌด๊ฒ๋ ์์ ์ ํ๋ค. request_session_run์ ๊ทธ ํด๋ฆญ์ ๊ฑด๋๋ด๋ค. ๋์ osfoundry:run๊ณผ Runner ์๋ฆฌ๊ฐ ํ์ํ๋ค. ์ค๋๊ฐ ์๋ฆฌ๋ฅผ ์ค ๋ ์ด๋ฏธ ํ ๋ฒ ๋๋ ๋ค๊ณ ๋ณด๋ ๊ฑฐ๋ค. max_rounds๋ ๋ ๋ค ์ต๋ 10. goal์ ์ ์์ด 5,000์, run์ด 10,000์๊น์ง๋ค.
Codexํํ
๋์์ค๋ ๊ฑด ๊ฒฐ๊ณผ์ง, ์ค๊ฐ ์๊ฐ์ด ์๋๋ค. read_session_task_result๋ ์ด ์ฐ๊ฒฐ์ด ์์ํ ํ์คํฌ๋ง ๋๋ ค์ค๋ค. read_session_mail์ ์ด ์ฐ๊ฒฐ ์์ผ๋ก ์จ ๋
ธํธ์ ์๊ธฐ๊ฐ ์ด ๋
ธํธ๋ฅผ ๋๋ ค์ฃผ๊ณ , ํด ์ค๋ช
์๋ "Internal agent analysis is excluded."๋ผ๊ณ ๋ผ ์๋ค. post_session_note๋ ์ด๋ฆ ๋ถ์ ๋
ธํธ๋ฅผ ๋จ๊ธธ ๋ฟ์ด๋ค. ์ธ์
์์ด์ ํธ๊ฐ ๋ต์ฅ์ ํ ์ ์์ง๋ง ์ค๋ช
๋๋ก "does not trigger an automatic run"์ด๋ค.
์ธ์
์ ๋ ๋๋ ๊ณณ์์ ๋๋ค. ํธ๋์คํ๋ก Codex์ ๋ชจ๋ธ์ด๋ ํค, ์ ์ฅ์๊ฐ osFoundry๋ก ๋์ด๊ฐ๋ ๊ฒ ์๋๋ค. ๋์ด๊ฐ๋ ๊ฑด ํ
์คํธ๊ณ , ์ธ์
์ ์๊ธฐ ์์ด์ ํธ์ ํด๋ก ์ผํ๋ค. ๋ก์ปฌ ํด๋๋ ๋๊ธฐํ ์ ๋ ํญ๋ชฉ์ฒ๋ผ ๋ฐ์คํฌํฑ ์์๋ง ์๋ ๊ฑด ๋ฟ์ง ์๋๋ค. ์๋ฒ์ initialize ์๋ต์๋ "Local-only data is unavailable to cloud clients."๋ผ๊ณ ๋์จ๋ค.
๊ถํ ํ์๋ ํด๋ฆญ ํ ๋ฒ์ด๋ค. Connected ํญ์์ ์๋ฆฌ๋ฅผ ๋นผ๊ฑฐ๋ ์ฐ๊ฒฐ์ Revokeํ๋ฉด Codex์ ๋ค์ ์ธ์ ํธ์ถ์ ๊ฑฐ๋ถ๋๋ค.
์ฒ์ ํด ๋ณด๊ธฐ์ ์ง๊ธ ์์ผ๋ก ๋๋ฆฌ๋ ๋ฃจํ๊ฐ ๋ฑ ์ข๋ค. Codex CLI๋ฅผ Contributor๋ก ์ด๋ํ๊ณ , ์ ์ฅ์์์ ๋ณ๊ฒฝ์ ๋ง๋ฌด๋ฆฌํ ๋ค์, ๋ฐ๋ ์ ์์ฝ์ ๋ถ์ฌ์ ๋ฃจํ์ ๋ค์ run์ ์ ์ํ๊ฒ ํด ๋ณด์. osFoundry ์์ด์ ํธ๋ผ๋ฆฌ ์ปจํ ์คํธ๋ฅผ ์ด๋ป๊ฒ ๋๊ธฐ๋์ง๋ ํธ๋์คํ ํ์ด์ง์, Handoffs ํญ ์์น๋ ์์ด์ ํธ ์ธ์ ํ์ด์ง์ ์๋ค.





Top comments (0)