Skip to content

Repository files navigation

JFrog Plugin for OpenAI Codex

JFrog plugin for OpenAI Codex: artifact management, security scanning, supply-chain best practices, and Agent Guard.

Features

The JFrog plugin provides the following capabilities, grouped by component:

Component Feature Description
MCP JFrog MCP server Bundled jfrog MCP server (.mcp.json) at https://<JFROG_PLATFORM_URL>/mcp; this server signs in via OAuth (codex mcp login jfrog), so it needs no API key.
Skill JFrog Platform Interact with Artifactory repositories, builds, permissions, users, access tokens, projects, release bundles, and platform administration via the JFrog CLI and REST/GraphQL APIs. Also covers security audits, CVE lookups, and Advanced Security exposure queries.
Skill Package curation Check whether npm, Maven, PyPI, Go, and other packages are safe, curated, or allowed, then download them through Artifactory remote caches or curation-aware package managers.
Hook + Skill Agent Package Resolution (Preview) Automatically route packages installed by the AI agent through your organization's JFrog Artifactory, keeping agent-driven installs inside your Curation, Xray, and governance perimeter.
Skill Agent Guard Codex manages MCPs through the JFrog Agent Guard. Through the Agent Guard you can discover, install, configure, update, and remove MCP servers from the JFrog AI Catalog approved for your project, and authenticate to remote HTTP MCPs via OAuth, API key, or bearer token.

Prerequisites

Before installing, make sure you have:

  • JFrog host URL and access token — Your JFrog platform URL and a valid access token.
  • OpenAI Codex — Installed, with plugin support (codex plugin CLI commands available).
  • Node.js (≥ 18) — with npx on your PATH (used by the Agent Guard).
  • Skill runtime requirementsjf CLI, jq, and curl on PATH, plus a configured JFrog instance. For the minimum versions, see the upstream skills Requirements. Configure the CLI with jf config add — see Authentication.
  • JFrog AI Catalog (optional) — If you want to use the Agent Guard feature, your JFrog subscription needs to include the AI Catalog entitlement. Contact your JFrog account team if you're unsure whether it's enabled.
  • JFrog CLI ≥ 2.105.0 (optional) — If you want the Agent Guard to auto-resolve the credentials/server ID from the JFrog CLI configuration.
  • JFrog project (optional) — If you want to use the Agent Guard feature.

Installation

Install the Codex plugin

Add the JFrog marketplace and install the plugin with the Codex CLI:

codex plugin marketplace add jfrog/codex-plugin
codex plugin add jfrog@codex-plugin

Browse installed plugins in the Codex TUI with /plugins. Installing the plugin does not trust the SessionStart hook — restart Codex, run /hooks, and trust the JFrog Package Resolution command. ChatGPT web does not run hook scripts.

Local development

Test an uncommitted checkout without publishing. From (or pointing at) your clone — the repo root is the marketplace root; .agents/plugins/marketplace.json registers the jfrog plugin:

codex plugin marketplace add /path/to/codex-plugin
codex plugin add jfrog@codex-plugin

Authentication

Configure the JFrog CLI so the skills and Agent Guard can reach your platform. Run jf login for browser-based setup, or if you have never configured the JFrog CLI on this machine:

  1. Open your terminal.

  2. Run:

    jf config add
  3. Follow the interactive prompts to enter your JFrog platform URL and access token.


JFrog Platform MCP server

The plugin bundles the jfrog MCP server (.mcp.json). After installing, do two things:

  1. Set your host. Outside Codex, in your terminal, find the install path with codex plugin list | grep jfrog@codex-plugin; the PATH column is your <PATH>. Edit <PATH>/.mcp.json and replace <JFROG_PLATFORM_URL> in the url with your full JFrog Platform host — e.g. mycompany.jfrog.io (or your self-hosted / custom domain).
  2. Log in (OAuth). Run codex mcp login jfrog and finish the browser sign-in.

Restart Codex; the jfrog MCP server and its tools are now available (verify with codex mcp list).


Verify

Verify your installation right after setup. Run the codex … commands below in your terminal, outside Codex; / commands are typed inside the Codex TUI. After restarting Codex, confirm:

  1. Plugin is installed and enabled:

    codex plugin list | grep jfrog@codex-plugin

    You should see the jfrog@codex-plugin row reporting installed, enabled, with its version and install path:

    jfrog@codex-plugin  installed, enabled  <VERSION>  <PATH>
    

    If the row is missing or shows not installed, see Recovery.

  2. Skills are discoverable — in the Codex TUI, type /skills and confirm the JFrog skills appear. See Discovering and invoking skills.

  3. MCP server is connected — run codex mcp list and confirm jfrog is connected (after codex mcp login jfrog).

  4. SessionStart hook is trusted/hooks lists the JFrog Package Resolution command as trusted. Without that, Agent Package Resolution does not inject.

  5. jf rt ping — succeeds against your configured server.

If any check fails, see Recovery. Setting MCP environment variables by hand does not repair a failed MCP initialization — re-run jfrog-init instead. An untrusted SessionStart hook is a /hooks step, not an init failure.


Recovery

Symptom Do this Do not do this
MCP missing after install Run jfrog-init, edit the plugin .mcp.json host if needed, run codex mcp login jfrog, restart Codex, then codex mcp list. Assume exporting JFROG_PLATFORM_URL will register MCP. Codex reads the host from .mcp.json.
jfrog-init stopped at CLI/auth Follow the skill prompt (jf config add, web login, or token path), then re-run jfrog-init. Skip init and only export env vars.
Placeholder still in .mcp.json Set the host in <install-path>/.mcp.json, run codex mcp login jfrog, restart Codex. Reinstall the plugin when only the host placeholder is wrong.
Plugin not listed Re-run codex plugin add jfrog@codex-plugin outside Codex, then restart Codex. Run install commands from inside the Codex TUI.
/hooks shows the Package Resolution command as untrusted, or no Artifactory routing in a new session Restart Codex, open /hooks, and trust the exact command. A later change to the hook definition requires trust again. Assume codex plugin add approved the hook. Do not use --dangerously-bypass-hook-trust as the normal path.
ChatGPT web never routes installs Use Codex CLI or the ChatGPT desktop Codex surface. Expect hook scripts to run on ChatGPT web.

Agent Package Resolution (Preview)

Preview Notice: This feature is in preview and licensed under the Apache License 2.0. For clarity: This software is provided "as-is" without warranty of any kind, and without support obligations or service level commitments. Behavior, APIs, conventions, and structure may change without notice between releases. JFrog makes no guarantees of backward compatibility during the preview release cycle. Use in production environments is at your own risk.

The plugin can now automatically route the packages your AI agent installs (npm, PyPI, Maven, Go, Docker, Helm, and NuGet) through your organization's JFrog Artifactory instead of public registries. This keeps agent-driven dependency installs inside your organization's governance perimeter.

Agent Package Resolution is in preview. The shipped template enables it with empty repository bindings (nothing is routed until Consent Enable or an admin adds defaultGlobalRepos). To get started:

Installing the plugin does not skip /hooks trust. ChatGPT web does not run the SessionStart hook.


Usage

Once configured, interact with the JFrog plugin through natural language. Examples are grouped by capability.

Discovering and invoking skills

Reach the JFrog skills three ways:

  • /skills — opens the Skills menu; choose List skills to browse and run one. Tip: press @ to open the skills list directly.
  • @ — type @ followed by a skill name to mention it inline (e.g. @jfrog, @jfrog-package-curation).
  • Natural language — just describe your task; Codex picks a matching skill by its description (the examples below work this way).

If a newly installed skill doesn't show up, restart Codex so it re-scans plugins.

JFrog Platform skill

Ask the agent… What happens
"List my Artifactory repositories." Returns repositories via the JFrog CLI.
"Upload this build to Artifactory." Publishes build artifacts and metadata.
"Run a security audit on this project." Runs an Xray / Advanced Security audit and summarizes findings.
"Show me details on CVE-2021-23337." Looks up CVE details in JFrog Advanced Security.
"Create a scoped access token for CI." Creates an access token with the requested scope.
"Promote this release bundle to production." Uses Lifecycle / Distribution APIs to promote the bundle.

Package curation skill

Ask the agent… What happens
"Is lodash@4.17.21 safe to install?" Checks JFrog Public Catalog signals and curation policy for the package.
"Is this Maven package approved for use?" Checks curation entitlement and policy for the requested package.
"Download requests via JFrog." Resolves the package through an Artifactory remote cache or curation-aware package manager.

Agent Package Resolution

When Agent Package Resolution is enabled and configured, no special prompt syntax is required. Ask the agent to install or use a package as you normally would, and the plugin routes supported package operations through your organization's Artifactory.

Ask the agent… What happens
"Add lodash to this project." Resolves the npm package through the configured Artifactory repository.
"Add Excel file import to this app." The agent selects a suitable package and resolves it through the configured Artifactory repository.
"Pull the alpine Docker image." Pulls the image through the configured Artifactory Docker repository.

MCP server management (Agent Guard)

Ask the agent… What happens
"Which MCP servers can I install?" Returns all MCP servers approved for your current project that you can install.
"What MCP servers do I already have?" Returns only the MCP servers already installed on your machine.
"Show me the details for the filesystem MCP server." Returns detailed metadata, required configuration (environment variables, runtime arguments), and active tool policies for a given server.
"Add the GitHub MCP server." Installs an approved MCP server and syncs its tool policies locally. Secrets are requested via a CLI command — never in chat.
"Update the environment variables for the Slack MCP." Replaces the configuration for an already-installed server without removing and reinstalling it.
"Remove the Slack MCP server." Removes the server and its stored credentials from your local setup. Changes apply immediately.
"Log in to the remote Jira MCP server using OAuth." Authenticates with a remote HTTP-based MCP server (OAuth, API key, or bearer token).

How secrets are handled

When an MCP server requires a sensitive configuration value, the agent cannot set it directly. Instead, it returns a CLI command for you to copy and run in your terminal. Secrets such as API keys, tokens, and connection strings are never exposed in the agent chat history.


Troubleshooting

See the JFrog MCP Registry troubleshooting guide.


Updating the vendored skills

The skills/ tree is vendored from jfrog/jfrog-skills at the version pinned in scripts/sync-skills-vendor.json. To pull a newer upstream release into this repo:

  1. Bump pin in scripts/sync-skills-vendor.json to the new upstream tag.

  2. Re-sync and commit the refreshed tree:

    node scripts/sync-skills.mjs

    It downloads the pinned tarball from codeload.github.com and replaces the directories listed in paths (today: skills/).

  3. Bump version in both .codex-plugin/plugin.json and package.json (they must match — CI enforces this) so the published plugin reflects the new skills bundle.

  4. Commit the pin bump, the regenerated skills/ tree, and the version bump together, and open a PR (see Releasing).

See VENDOR.md for the full picture.

Updating the vendored modules

The modules/ tree is vendored from GHE jfrog-agent-hooks at the pin in .github/scripts/sync-modules-vendor.json. Automated chore/sync-modules-v* PRs replace that tree. To refresh locally:

JFROG_AGENT_HOOKS_PATH=/path/to/jfrog-agent-hooks node .github/scripts/sync-modules.mjs

Do not hand-edit files under modules/. hooks/hooks.json is owned by this repo and is not part of the vendor slice.


Releasing

Releases are cut automatically by .github/workflows/release.yml when a commit lands on main with a version in .codex-plugin/plugin.json that is newer than the latest release tag (cross-checked against package.json). The workflow publishes a GitHub Release v<version> with a zipped artifact. Every merge to main must bump both manifests — a commit that lands without a bump fails the workflow instead of releasing. See CONTRIBUTING.md for the full flow.


Development

npm test         # unit tests for the validator
npm run validate # lint manifests + skill frontmatter

Contributing

See CONTRIBUTING.md for development workflow and pull-request expectations.

Security

See SECURITY.md for how to report vulnerabilities.

License

Licensed under the Apache License 2.0.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages