boxkite
← 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. boxkite 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, anything else running in that pod gaining a path to the internet it didn't need. Widening the whole network boundary to satisfy one specific requirement is a bigger grant than the requirement actually calls for.

enable_git_tools=True: eight operations, nothing broader

boxkite'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 boxkite 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 boxkite — 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.

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

Individual researchers don't need a separate integration to get at this — the same tool surface, including the opt-in git tools, is available through boxkite-mcp's Streamable-HTTP MCP endpoint, so a researcher driving their own Claude Code or Cursor session reaches the identical sandboxed, git-connected environment the team has already scoped, rather than a separate one-off setup per person.