Codex by OpenAI
Codex announces the release it just built
Two lines in config.toml give Codex your social accounts. It can post the release notes from a CI job, read the mentions every morning, and plan launch week for review.
- Connects through
- Remote MCP, OAuth sign-in
- Config
~/.codex/config.toml- Also used by
- The IDE extension and ChatGPT desktop
- Runs headless
codex exec
What Codex can do in your social accounts
The Codex CLI, the IDE extension and the ChatGPT desktop app read the same ~/.codex/config.toml, so one BuzzTake entry serves all three. ChatGPT on the web does not read it; the ChatGPT page has its own steps.
codex exec runs Codex without a person, which suits a release job: it reads the changelog for the new tag and posts it. The sandbox does not filter MCP connections, so BuzzTake needs no network exception.
Codex decides per tool whether to ask. tools.<tool>.approval_mode sets it, and a tool marked destructive, such as delete_post, always needs your approval.
It works on X, Mastodon, Bluesky, LinkedIn and Reddit, and on every other platform BuzzTake connects. Each action is one tool, named as in the actions reference.
Jobs for Codex
Say it in plain words. These are prompts that work, and the calls they make.
Post the release from CI
A job after each tag runs
codex exec, which reads the changelog section and posts it to X and Mastodon.codex exec "Read the CHANGELOG.md section for the newest tag and post a short summary to our X and Mastodon accounts with BuzzTake."2 × post20 credits ($0.20)A morning digest of mentions
A scheduled task reads notifications and searches for the project name, then writes the digest to a file in the repo.
Read our X and Bluesky notifications and search X for acme-api. Write the questions and bug reports to notes/mentions.md.
2 × read_notifications, 1 × search12 credits ($0.12)Answer a question with the code
Codex finds the answer in the repo and replies to the post that asked, after you approve the text.
Reply to https://x.com/dev_demo/status/1 with how to enable retries in acme-api, from the code. Show me the reply first.
1 × read_post, 1 × reply12 credits ($0.12)Plan launch week for review
From the launch doc, Codex plans posts on two platforms as drafts and submits them for review.
From docs/launch.md, plan three posts each for LinkedIn and X next week as BuzzTake drafts, and submit them for review.
6 × create_content10 credits for each draft that goes outKeep the profile links current
After the docs move, Codex updates the website link in the profiles.
Our docs moved to docs.acme.example. Update the website on our X and Mastodon profiles.
2 × update_profile20 credits ($0.20)
Set up Codex
Codex runs on your computer or in CI and reaches BuzzTake over the internet.
Add the server
Or run
codex mcp add buzztake --url https://mcp.buzztake.com/mcp, which starts the sign-in when it sees OAuth. A trusted project can also have its own.codex/config.toml.~/.codex/config.toml [mcp_servers.buzztake] url = "https://mcp.buzztake.com/mcp"Sign in
BuzzTake opens in your browser. Sign in, check the permissions and select Allow. Add
--no-browseron a machine without one.Terminal codex mcp login buzztakeGive actions time
An action tool waits up to 120 seconds for its result, and Codex stops a tool call after 60 by default.
~/.codex/config.toml [mcp_servers.buzztake] url = "https://mcp.buzztake.com/mcp" tool_timeout_sec = 150Choose what asks
Make posts and replies ask in interactive sessions. Leave this out for jobs that run with nobody to answer.
~/.codex/config.toml [mcp_servers.buzztake.tools.post] approval_mode = "prompt" [mcp_servers.buzztake.tools.reply] approval_mode = "prompt"Run it
Start with a read, which changes nothing.
Terminal codex exec "List my BuzzTake accounts and read the latest X notifications."
Ways to connect Codex
The routes that reach BuzzTake from Codex, and how well each one fits.
- Remote MCP, OAuth sign-inBest fit
codex mcp loginsigns in once and renews the token. Works in the CLI, the IDE extension and the desktop app.- Remote MCP, API keyWorks
For CI, where nobody can sign in through a browser: Codex sends the key from an environment variable as a Bearer token.
~/.codex/config.toml [mcp_servers.buzztake] url = "https://mcp.buzztake.com/mcp" bearer_token_env_var = "BUZZTAKE_API_KEY"- REST APIWorks
Codex can run curl, but the sandbox blocks network calls from its shell unless you allow them. MCP needs no such exception.
POST /v1/accounts/{id}/actions curl https://api.buzztake.com/v1/accounts/$ACCOUNT_ID/actions \ -H "Authorization: Bearer $BUZZTAKE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type": "post", "text": "Version 2.4 is out.", "wait": 60}'
What it costs
BuzzTake charges in prepaid credits for the actions it runs. One credit is one US cent.
| Job | Credits | USD |
|---|---|---|
| Post the release from CI | 20 | $0.20 |
| A morning digest of mentions | 12 | $0.12 |
| Answer a question with the code | 12 | $0.12 |
| Plan launch week for review | 10 per post | $0.10 per post |
| Keep the profile links current | 20 | $0.20 |
A post, a quote or a message is 10 credits, a reply 8, a like or a follow 3, and a read or a search 4. A planned post costs nothing until it goes out. Reads are charged when they succeed, and a write that fails before the page changes is refunded.
Codex's model use is billed by OpenAI, not by BuzzTake. Every price is on the pricing page, and the rules are in Credits.
Approvals and safety
A person can approve before anything goes out, and every action is recorded.
approval_mode per tool, or default_tools_approval_mode for the server, sets whether Codex asks. A tool marked destructive always asks; in BuzzTake that is delete_post.
In codex exec, a tool call that needs approval is cancelled, because nobody can answer. For unattended jobs, leave the posting tool on its default, or let the job plan drafts that a reviewer approves in BuzzTake.
- Ask for drafts when a person must check first.
create_contentputs the post on the calendar,submit_for_reviewsends it to a reviewer, and it goes out only after the approval. - Give the agent an API key without the
content_publishpermission. It can then plan drafts and send them for review, and it cannot post by itself. - BuzzTake records every action: who asked, through which key, on which account, what the page returned and what it cost.
- A sign-in step that BuzzTake cannot finish, such as a 2FA code, becomes a challenge. The agent asks you for the code, or gives you a link to a live browser where you answer it.
- Only an owner or an administrator can allow an OAuth client. Disconnect it under Developers in the app, and its token stops working.
More in Approvals and Reports and audit.
Limits
- Codex stops a tool call after
tool_timeout_sec, 60 seconds by default. Set 150 for BuzzTake. - Codex cloud tasks are not documented to use MCP servers. Use the CLI, the IDE extension or the desktop app.
- Scheduled tasks are in the ChatGPT desktop app, under Scheduled. Local ones need the computer on and the app running.
- An action tool waits up to 120 seconds for its result. A longer action comes back with its id, and
get_actionfollows it to the end. - The MCP server runs up to 8 requests at a time for one key or sign-in. Above that it answers 429 with
Retry-After, and the client tries again. - One organization connects up to 200 accounts.
- The platforms set their own pace. When one asks an account to slow down, the action ends with
rate_limited, and a write that failed before the page changed is refunded.
Troubleshooting
Every error code and its fix is in Errors and challenges.
- A post in
codex execwas cancelled - The tool is set to ask, and nobody could answer. Remove
approval_mode = "prompt"for that job, or plan drafts. - A tool call times out after 60 seconds
- Raise
tool_timeout_secto 150 in the server's table. - The client says the server refused the token (401)
- The sign-in expired or was revoked, or the API key is wrong. Sign in again from the client, or make a new key under Developers.
- An action stops at
needs_input - The platform asked for a code. Give the code to the agent so it calls
answer_challenge, or open the challenge'ssign_in_urland answer in the live browser. - The answer is
insufficient_credits - The balance is lower than the price, and nothing was queued. A post needs 10 credits. Top up, then ask again.
- The answer is
unsupported - The platform has no such action. The error lists the actions it has, and the generic
browseraction can do the rest step by step. - An account shows
signed_out - Its session ended and no stored password could sign it in again. Ask the agent for a sign-in link with
get_sign_in_linkand open it, or reconnect the account in the app.
Codex questions
- Can Codex post to social media?
- Yes. With BuzzTake in config.toml, Codex posts, replies and reads your accounts on 12 platforms from the CLI, the IDE extension, the desktop app and codex exec.
- Can Codex post from a GitHub Actions job?
- Yes. Use an API key from a secret with bearer_token_env_var, and run codex exec with the post tool on its default approval, since nobody can answer a prompt there.
- Does ChatGPT on the web use the Codex config?
- No. ChatGPT on the web adds BuzzTake as a custom MCP plugin. The desktop app, the CLI and the IDE extension share config.toml.
- What does a release post cost?
- 10 credits per platform, so X and Mastodon are 20 credits. Codex's own use is billed by OpenAI.
Related agents
All AI agents, the MCP server docs, the quickstart, and the platforms: X Mastodon Bluesky LinkedIn Reddit
Give Codex your social accounts.
Add an account with a password, cookies or a sign-in link, then connect the MCP server and ask.