GitLab for AI agents

GitLab is a DevOps platform combining Git repository hosting with issues, merge requests, and CI/CD pipelines in one product. Engineering teams pull it into internal tools and scripts rather than building the same capability themselves. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

Developer toolsOAuth 2.0MCP + RESTgitlab.com
AUDIT LOG · GITLABPOLICY: acme-support
09:41:07 · claude · u_8f2read
gitlab.list_labels
List Labels✓ allowed · 212ms
09:41:08 · claude · u_8f2read
gitlab.get_file
Get Repository File✓ allowed · 164ms
09:41:09 · claude · u_8f2write
gitlab.create_file
Create Repository File✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
gitlab.delete_group
Delete Group✕ blocked · policy: deny
EVERY GITLAB CALL, ON THE RECORD
01 · USE CASES

What agents do in GitLab.

01

Create a merge request

Push a branch and open a merge request with a description, leaving approval and merge to a reviewer.

02

Comment on an issue

Add a note to a project issue to log progress or ask a clarifying question.

03

Cancel a running pipeline

Cancel a CI pipeline that is running against the wrong branch, after confirming with the requester.

02 · ACTIONS

123 GitLab actions, graded by risk.

Every GitLab action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

56

Look things up. Allowed by default.

  • gitlab.get_file
    Get Repository File
  • gitlab.get_user
    Get User
  • gitlab.get_group
    Get Group Details
  • gitlab.get_issue
    Get Issue
  • gitlab.get_label
    Get Project Label
  • gitlab.get_users
    Get Users
  • gitlab.get_groups
    Get Groups
  • gitlab.get_project
    Get Project
  • gitlab.get_webhook
    Get Webhook
  • gitlab.list_labels
    List Labels
  • gitlab.get_projects
    Get Projects
  • gitlab.get_raw_file
    Get Raw File
  • gitlab.get_job_trace
    Get Job Trace
  • gitlab.get_milestone
    Get Milestone
  • gitlab.list_webhooks
    List Webhooks
  • gitlab.get_issue_note
    Get Issue Note
+ 40 MORE

write

36

Create and change things. Allow, or ask the user first.

  • gitlab.create_file
    Create Repository File
  • gitlab.create_group
    Create GitLab Group
  • gitlab.create_label
    Create Label
  • gitlab.update_group
    Update GitLab Group
  • gitlab.update_label
    Update Label
  • gitlab.create_commit
    Create Commit
  • gitlab.add_spent_time
    Add Spent Time
  • gitlab.create_project
    Create Project
  • gitlab.create_webhook
    Create Project Webhook
  • gitlab.update_webhook
    Update Webhook
  • gitlab.create_pipeline
    Create Pipeline
  • gitlab.create_milestone
    Create Milestone
  • gitlab.update_milestone
    Update Milestone
  • gitlab.create_issue_note
    Create Issue Note
  • gitlab.update_issue_note
    Update Issue Note
  • gitlab.create_project_issue
    Create Project Issue
+ 20 MORE

destructive

31

Delete, cancel or archive. Ask first, or deny outright.

  • gitlab.cancel_job
    Cancel Job
  • gitlab.delete_group
    Delete Group
  • gitlab.delete_label
    Delete Label
  • gitlab.delete_project
    Delete Project
  • gitlab.delete_webhook
    Delete Webhook
  • gitlab.archive_project
    Archive Project
  • gitlab.cancel_pipeline
    Cancel Pipeline
  • gitlab.delete_pipeline
    Delete Pipeline
  • gitlab.delete_milestone
    Delete Milestone
  • gitlab.delete_issue_note
    Delete Issue Note
  • gitlab.delete_merge_request
    Delete Merge Request
  • gitlab.delete_repository_file
    Delete Repository File
  • gitlab.delete_repository_branch
    Delete Repository Branch
  • gitlab.reset_spent_time
    Reset Spent Time
  • gitlab.list_merge_requests
    List Merge Requests
  • gitlab.merge_merge_request
    Merge Merge Request
+ 15 MORE
03 · HOW IT WORKS

GitLab in three steps.

  1. 01Your users connect GitLabThey sign in to GitLab on Arc0 Connect, under your brand, and approve the access you ask for.
  2. 02You set the rulesReads run, writes like “create Repository File” can wait for the user, and “delete Group” can be denied outright.
  3. 03Any agent can actYour agent calls GitLab through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('gitlab', {
  read: 'allow',
  write: 'ask',        // create_file
  destructive: 'deny',  // delete_group
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How GitLab connects.

Users sign in to GitLab on Arc0 Connect and approve the scopes you request. Build with Arc0’s GitLab OAuth app, or bring your own so the GitLab consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

The same GitLab connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
OAuth 2.0
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use GitLab from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

GitLab and Arc0, answered.

Q01

Can I use GitLab with Claude, ChatGPT or Cursor?

Yes. Connect GitLab to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the GitLab actions you allow.

Q02

How do users connect GitLab?

Users sign in to GitLab on Arc0 Connect and approve the scopes you request. Build with Arc0’s GitLab OAuth app, or bring your own so the GitLab consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

Q03

Which GitLab actions can my agent take?

123 in total: 56 read, 36 write and 31 destructive, such as “create Repository File”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in GitLab?

Yes. Actions like “delete Group” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call GitLab too?

Yes. The same GitLab connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug GitLab into your agent.

Your users connect GitLab once, under your brand. Your agent gets 123 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan