boxxkite
← All posts
Research

Git Access for Your Research Agent, Scoped to Exactly What It Needs

"Let the agent check out our analysis repo, run it, and commit the results back" sounds like a one-line requirement. It's actually two requirements pulling in opposite directions: the agent needs real git access to a real remote, and the sandbox it runs in should still have no general path to the open internet. Most sandboxes make you choose. boxxkite treats git access as a separate, narrow grant instead.

The ask: checkout, run, commit back

A research team maintaining a shared, version-controlled analysis codebase wants an agent that can clone the repo, run the analysis reproducibly against current data, and push results — a new branch, an updated notebook, a commit with regenerated output — back to the same remote everyone else works from. That's a normal research workflow. It just happens to require git operations from inside a sandbox.

Why "just give the sandbox internet access" is the wrong default

The easy way to enable this is to open up general network egress for the session — at which point git works, but so does everything else: exfiltration, arbitrary outbound calls, any other process in that pod suddenly holding a path to the internet it never needed. Widening the whole network boundary to satisfy one specific requirement grants far more than the requirement calls for.

enable_git_tools=True: eight operations, nothing broader

boxxkite's git tool set is opt-in and enumerable: enable_git_tools=True adds exactly git_clone, git_status, git_add, git_commit, git_push, git_pull, git_branch, and git_checkout— eight named operations, not a general network exception. The pod's network-dark default doesn't change just because these tools are enabled.

A narrow exception, not an open network

Pod — this sessionenable_git_tools=Truegit_clone · git_status · git_addgit_commit · git_push · git_pullgit_branch · git_checkoutpython_interpreterruns the analysisscoped exceptionInternal git remoteteam-operated, self-hostedgeneral internet accessstill denied by default
Enabling the git tools doesn't widen the pod's network posture on its own — reaching the git remote at all still requires a scoped network-policy exception to that one internal host, separate from general internet access, which stays denied.

Self-hosting so the remote can be internal-only

Because boxxkite is self-hostable, the network-policy exception that lets these tools reach a git remote can point at a host inside the team's own network — an internally-hosted git server — rather than requiring a route to the public internet at all. The scope of the exception is something the team defines on its own cluster, not a fixed allowlist a vendor maintains.

Running the analysis in the same isolated pod

Once the repo is checked out, the actual analysis runs through the same python_interpreter used elsewhere in boxxkite — a persistent, kept-alive interpreter, so the agent can load data, run the pipeline, inspect intermediate results, and iterate, all inside the one session before committing back whatever changed.

boxxkite-mcp: the same environment from your own Claude Code or Cursor

Individual researchers don't need a separate integration to reach this. The same tool surface — including the opt-in git tools — is exposed through boxxkite-mcp's Streamable-HTTP MCP endpoint, so someone driving their own Claude Code or Cursor session lands in the identical sandboxed, git-connected environment the team already scoped, not a one-off setup per person.