From curl to the Backlog CLI 'bee' — Making AI Agent Integration One Step Easier Nulab's volunteer-maintained open-source tool 'bee' provides a GitHub CLI-style interface for Backlog, reducing API key exposure and simplifying AI agent integration. The tool, requiring Node.js 20.18+, supports commands like 'bee issue list' and 'bee api', but its '--status' filter expects numeric IDs, not 'open'. Last time, in Issuing a Backlog API Key to Drive It from AI Agents https://codenote.net/en/posts/backlog-api-key-for-ai-agents/ , I walked through issuing a Backlog API key and letting Claude Code or Codex hit the REST API through curl. It works, but once you actually live with it, small frictions pile up: - Even if the API key sits in an environment variable, it still shows up as apiKey=... in the URL query, and that leaks into command history and shared scripts - The response is raw JSON, so before handing it to the agent I keep re-deciding whether to pipe it through jq - Common lookups like “my open issues” force me to reassemble the endpoint and query parameters every time A Nulab volunteer project has taken care of that abstraction layer: bee https://github.com/nulab/bee . This post is what I got out of putting it in front of my Backlog + AI-agent setup. What bee Is In one sentence, bee https://github.com/nulab/bee is GitHub CLI https://cli.github.com/ gh for Backlog. It exposes Backlog’s core resources projects, issues, wikis, notifications, the dashboard through a gh issue list -style command surface. One important caveat: bee is not an officially supported Nulab product. As the README https://github.com/nulab/bee itself calls out, it is volunteer-maintained OSS MIT licensed https://github.com/nulab/bee/blob/main/LICENSE . That said, it is driven by Nulab folks, and it goes through the same official Backlog REST API https://developer.nulab.com/docs/backlog/ I described last time, so the auth story does not change. The previous conclusion, “run an agent-only Backlog user and issue an API key for it,” carries over directly onto bee. Install and First-Time Auth bee ships as an npm package and requires Node.js https://nodejs.org/ 20.18 or later. First-run auth is per space. Both browser-based OAuth and the API key from the previous post work; for agent use, the API key path is usually the easier fit. If you juggle multiple Backlog spaces, bee auth switch flips the active one. Once auth is in place, every other subcommand picks up the credentials implicitly. How bee Changes the Agent Story The biggest shift versus raw curl is that the API key stops showing up on the command line. bee’s credentials live in a local config file, so any shell command handed to Claude Code or Codex no longer needs apiKey=xxx in it. The structural risk of an API key leaking into an agent prompt or shell history drops sharply. The second shift is output handling. The default output is human-readable, but most subcommands accept --json and return machine-readable JSON. Even if you still let the agent parse the output, the shape is far more stable than hand-rolled REST. For the times you still want raw REST poking at a newer Backlog endpoint, say , bee api