Connect
Connect Codex to any app using the Composio CLI. Stop generating text about what you could do - actually do it from the shell.
When to Use This Skill
Use this skill when you need Codex to:
- Send that email instead of drafting it
- Create that issue instead of describing it
- Post that message instead of suggesting it
- Update that database instead of explaining how
What Changes
| Without Connect | With Connect | |-----------------|--------------| | "Here's a draft email..." | Sends the email | | "You should create an issue..." | Creates the issue | | "Post this to Slack..." | Posts it | | "Add this to Notion..." | Adds it |
Supported Apps
1000+ integrations including:
- Email: Gmail, Outlook, SendGrid
- Chat: Slack, Discord, Teams, Telegram
- Dev: GitHub, GitLab, Jira, Linear
- Docs: Notion, Google Docs, Confluence
- Data: Sheets, Airtable, PostgreSQL
- CRM: HubSpot, Salesforce, Pipedrive
- Storage: Drive, Dropbox, S3
- Social: Twitter, LinkedIn, Reddit
Setup
1. Install the Composio CLI
curl -fsSL https://composio.dev/install | bash
2. Log In
composio login
composio whoami
This opens a browser for authentication and lets you pick your default org and project. Use -y to skip prompts in automated flows.
3. Link the Toolkits You Need
composio link github
composio link gmail
composio link slack
Each command walks through OAuth once, then the connection persists.
Done. Codex can now drive any connected app from the shell.
Core Workflow
- Know the tool slug? →
composio execute - Don't know the slug? →
composio search - Need clarification on inputs? →
composio execute --get-schemaor--dry-run - Toolkit not connected? →
composio link <toolkit>and retry - Multiple steps needed? →
composio runfor workflows,composio proxyfor raw API calls
Examples
Discover a Tool
composio search "create a github issue"
composio search "send an email" --toolkits gmail
Inspect Inputs Before Calling
composio tools info GITHUB_CREATE_ISSUE
composio execute GITHUB_CREATE_ISSUE --get-schema
composio execute GITHUB_CREATE_ISSUE --dry-run -d '{"owner":"acme","repo":"app","title":"Bug"}'
Send an Email
composio execute GMAIL_SEND_EMAIL -d '{
"recipient_email": "sarah@acme.com",
"subject": "Shipped!",
"body": "v2.0 is live, let me know if issues"
}'
Create a GitHub Issue
composio execute GITHUB_CREATE_ISSUE -d '{
"owner": "my-org",
"repo": "repo",
"title": "Mobile timeout bug",
"labels": ["bug"]
}'
Post to Slack
composio execute SLACK_SEND_MESSAGE -d '{
"channel": "engineering",
"text": "Deploy complete - v2.4.0 live"
}'
Run Calls in Parallel
composio execute --parallel \
GMAIL_FETCH_EMAILS -d '{"max_results": 2}' \
GITHUB_GET_THE_AUTHENTICATED_USER -d '{}'
Chain Actions with composio run
composio run '
const issues = await search("github issues labeled bug this week");
const summary = issues.map(i => `- ${i.title}`).join("\n");
await execute("SLACK_SEND_MESSAGE", {
channel: "bugs",
text: `This week’s bugs:\n${summary}`
});
'
Load reusable workflows from a file:
composio run --file ./workflow.ts -- --repo composiohq/composio
Raw API Access (proxy)
When no dedicated tool exists, hit the authenticated API directly:
composio proxy https://gmail.googleapis.com/gmail/v1/users/me/profile \
--toolkit gmail
composio proxy https://gmail.googleapis.com/gmail/v1/users/me/drafts \
--toolkit gmail -X POST -H 'content-type: application/json' \
-d '{"message":{"raw":"..."}}'
How It Works
- You ask Codex to do something
- Codex picks a slug via
composio searchor prior knowledge - CLI checks connection, prompts
composio linkif missing - Action executes against the real API and returns JSON to stdout
Configuration
Global flags:
--log-level <all|trace|debug|info|warning|error|fatal|none>--helpfor per-command docs
Environment variables:
COMPOSIO_API_KEY- auth credential (set for non-interactive use)COMPOSIO_BASE_URL- custom API endpointCOMPOSIO_SESSION_DIR- override artifact storageCOMPOSIO_DISABLE_TELEMETRY=true- opt out of telemetry
Type-Safe SDK (Optional)
Generate typed client code when you want to call tools from an app rather than the shell:
composio generate ts # TypeScript types
composio generate py # Python types
Flags: -o <dir>, --toolkits <list>, --compact, --transpiled, --type-tools.
Troubleshooting
Not logged in→ runcomposio loginConnection required for <toolkit>→ runcomposio link <toolkit>- Unknown slug →
composio search "<what you want>"orcomposio tools list <toolkit> - Bad inputs →
composio execute <SLUG> --get-schemathen--dry-run - Action failed → check permissions in the target app
Full reference: docs.composio.dev/docs/cli
<p align="center"> <b>Join 20,000+ developers building agents that ship</b> </p> <p align="center"> <a href="https://platform.composio.dev/?utm_source=Github&utm_content=AwesomeSkills"> <img src="https://img.shields.io/badge/Get_Started_Free-4F46E5?style=for-the-badge" alt="Get Started"/> </a> </p>