Docs: Clarify Custom Agent tool availability by environment (Web UI vs IDE)
Summary
The Custom Agents feature is impressive — the Web UI supports 78 GitLab API tools for issue triage, CI analysis, repository operations, security workflows, and MR management. The architecture makes sense: filesystem/shell tools require local execution, which the IDE extension provides but the browser cannot.
This is a documentation enhancement request to help Custom Agent authors understand which tools work in which environments.
Current State
The Agent Tools page lists 88 tools without indicating environment availability. The Agentic Chat comparison notes "Run Shell commands - IDEs only" but doesn't enumerate affected tools.
When authors select tools in AI Catalog, all tools appear equivalent. If an author configures filesystem tools and tests in Web UI, the agent simply doesn't have those tools — no error, just missing capabilities.
Suggestion
Agent Tools page — Add an "Availability" column to the tools table. Here's a ready-to-use table with all 88 tools:
Complete tool availability table (MR-ready)
| Name | Tool | Description | Web UI | IDE |
|---|---|---|---|---|
| Add New Task | add_new_task |
Add a task. | Yes | Yes |
| Build Review Merge Request Context | build_review_merge_request_context |
Build comprehensive merge request context for code review. | Yes | Yes |
| Ci Linter | ci_linter |
Validate CI/CD YAML configurations against CI/CD syntax rules. | Yes | Yes |
| Confirm Vulnerability | confirm_vulnerability |
Change the state of a vulnerability in a project to CONFIRMED. |
Yes | Yes |
| Create Commit | create_commit |
Create a commit with multiple file actions in a repository. | Yes | Yes |
| Create Epic | create_epic |
Create epics in a group. | Yes | Yes |
| Create File With Contents | create_file_with_contents |
Create a file and write content to it. | No | Yes |
| Create Issue | create_issue |
Create issues in a project. | Yes | Yes |
| Create Issue Note | create_issue_note |
Add notes to an issue. | Yes | Yes |
| Create Merge Request | create_merge_request |
Create merge requests in a project. | Yes | Yes |
| Create Merge Request Note | create_merge_request_note |
Add notes to a merge request. Quick actions are not supported. | Yes | Yes |
| Create Plan | create_plan |
Create a list of tasks. | Yes | Yes |
| Create Vulnerability Issue | create_vulnerability_issue |
Create an issue linked to security vulnerabilities in a project. | Yes | Yes |
| Create Work Item | create_work_item |
Create a work item in a group or project. Quick actions are not supported. | Yes | Yes |
| Create Work Item Note | create_work_item_note |
Add a note to a work item. Quick actions are not supported. | Yes | Yes |
| Dismiss Vulnerability | dismiss_vulnerability |
Dismiss a security vulnerability in a project. | Yes | Yes |
| Edit File | edit_file |
Edit existing files. | No | Yes |
| Extract Lines From Text | extract_lines_from_text |
Extract specific lines from text. | Yes | Yes |
| Find Files | find_files |
Recursively find files in a project. | No | Yes |
| Get Commit | get_commit |
Get a commit from a project. | Yes | Yes |
| Get Commit Comments | get_commit_comments |
Get the comments of a commit in a project. | Yes | Yes |
| Get Commit Diff | get_commit_diff |
Get the diff of a commit in a project. | Yes | Yes |
| Get Current User | get_current_user |
Get the following information about the current user: username, job title, and preferred languages. | Yes | Yes |
| Get Epic | get_epic |
Get an epic in a group. | Yes | Yes |
| Get Epic Note | get_epic_note |
Get a note from an epic. | Yes | Yes |
| Get Issue | get_issue |
Get an issue from a project. | Yes | Yes |
| Get Issue Note | get_issue_note |
Get a note from an issue. | Yes | Yes |
| Get Job Logs | get_job_logs |
Get the trace for a job. | Yes | Yes |
| Get Merge Request | get_merge_request |
Get details about a merge request. | Yes | Yes |
| Get Pipeline Errors | get_pipeline_errors |
Get the logs for failed jobs from the latest pipeline of a merge request. | Yes | Yes |
| Get Pipeline Failing Jobs | get_pipeline_failing_jobs |
Get the IDs for failed jobs in a pipeline. | Yes | Yes |
| Get Plan | get_plan |
Get a list of tasks. | Yes | Yes |
| Get Previous Session Context | get_previous_session_context |
Get context from a previous session. | Yes | Yes |
| Get Project | get_project |
Get details about a project. | Yes | Yes |
| Get Repository File | get_repository_file |
Get the contents of a file from a remote repository. | Yes | Yes |
| Get Security Finding Details | get_security_finding_details |
Get the details of a potential vulnerability by its ID and the ID of the pipeline scan that identified it. | Yes | Yes |
| Get Vulnerability Details | get_vulnerability_details |
Get the following information about a vulnerability specified by ID: basic vulnerability information, location details, CVE enrichment data, detection pipeline information, and detailed vulnerability report data. | Yes | Yes |
| Get Wiki Page | get_wiki_page |
Get a wiki page from a project or group, including all its comments. | Yes | Yes |
| Get Work Item | get_work_item |
Get a work item from a group or project. | Yes | Yes |
| Get Work Item Notes | get_work_item_notes |
Get all notes for a work item. | Yes | Yes |
| Gitlab Api Get | gitlab_api_get |
Make read-only GET requests to any REST API endpoint. | Yes | Yes |
| Gitlab Blob Search | gitlab_blob_search |
Search for the contents of files in a group or project. | Yes | Yes |
| Gitlab Commit Search | gitlab_commit_search |
Search for commits in a project or group. | Yes | Yes |
| Gitlab Documentation Search | gitlab_documentation_search |
Search the GitLab documentation for information. | Yes | Yes |
| Gitlab Graphql | gitlab_graphql |
Execute read-only GraphQL queries against the GraphQL API. | Yes | Yes |
| Gitlab Group Project Search | gitlab_group_project_search |
Search for projects in a group. | Yes | Yes |
| Gitlab Issue Search | gitlab_issue_search |
Search for issues in a project or group. | Yes | Yes |
| Gitlab Merge Request Search | gitlab_merge_request_search |
Search for merge requests in a project or group. | Yes | Yes |
| Gitlab Milestone Search | gitlab_milestone_search |
Search for milestones in a project or group. | Yes | Yes |
| Gitlab Note Search | gitlab_note_search |
Search for notes in a project. | Yes | Yes |
| Gitlab User Search | gitlab__user_search |
Search for users in a project or group. | Yes | Yes |
| Gitlab Wiki Blob Search | gitlab_wiki_blob_search |
Search the contents of wikis in a project or group. | Yes | Yes |
| Grep | grep |
Recursively search for text patterns in files. This tool respects .gitignore file rules. |
No | Yes |
| Link Vulnerability To Issue | link_vulnerability_to_issue |
Link an issue to security vulnerabilities in a project. | Yes | Yes |
| Link Vulnerability To Merge Request | link_vulnerability_to_merge_request |
Link a security vulnerability to a merge request in a project using GraphQL. | Yes | Yes |
| List All Merge Request Notes | list_all_merge_request_notes |
List all notes on a merge request. | Yes | Yes |
| List Commits | list_commits |
List commits in a project. | Yes | Yes |
| List Dir | list_dir |
List files in a directory relative to the root of the project. | No | Yes |
| List Epic Notes | list_epic_notes |
List all notes for an epic. | Yes | Yes |
| List Epics | list_epics |
List all epics of a group and its subgroups. | Yes | Yes |
| List Group Audit Events | list_group_audit_events |
List audit events for a group. You must have the Owner role to access group audit events. | Yes | Yes |
| List Instance Audit Events | list_instance_audit_events |
List instance-level audit events. You must be an administrator to see instance audit events. | Yes | Yes |
| List Issue Notes | list_issue_notes |
List all notes on an issue. | Yes | Yes |
| List Issues | list_issues |
List all issues in a project. | Yes | Yes |
| List Merge Request Diffs | list_merge_request_diffs |
List the diffs of changed files in a merge request. | Yes | Yes |
| List Project Audit Events | list_project_audit_events |
List audit events for a project. You must have the Owner role to access project audit events. | Yes | Yes |
| List Repository Tree | list_repository_tree |
List files and directories in a repository. | Yes | Yes |
| List Security Findings | list_security_findings |
List ephemeral security findings from a specific pipeline security scan. | Yes | Yes |
| List Vulnerabilities | list_vulnerabilities |
List security vulnerabilities in a project. | Yes | Yes |
| List Work Items | list_work_items |
List work items in a project or group. | Yes | Yes |
| Mkdir | mkdir |
Create a directory in the current working tree. | No | Yes |
| Post Duo Code Review | post_duo_code_review |
Post a GitLab Duo code review to a merge request. | Yes | Yes |
| Post Sast Fp Analysis To Gitlab | post_sast_fp_analysis_to_gitlab |
Post SAST false positive detection analysis results. | Yes | Yes |
| Read File | read_file |
Read the contents of a file. | No | Yes |
| Read Files | read_files |
Read the contents of files. | No | Yes |
| Remove Task | remove_task |
Remove a task from a list of tasks. | Yes | Yes |
| Revert To Detected Vulnerability | revert_to_detected_vulnerability |
Revert a vulnerability's state to detected. |
Yes | Yes |
| Run Command | run_command |
Run bash commands in the current working directory. Git commands are not supported. | No | Yes |
| Run Git Command | run_git_command |
Run Git commands in the current working directory. | No | Yes |
| Run GLQL Query | run_glql_query |
Execute GLQL queries for work items, epics, and merge requests. | Yes | Yes |
| Run Tests | run_tests |
Execute test commands for any language or framework. | Yes | Yes |
| Set Task Status | set_task_status |
Set the status of a task. | Yes | Yes |
| Update Epic | update_epic |
Update an epic in a group. | Yes | Yes |
| Update Issue | update_issue |
Update an issue in a project. | Yes | Yes |
| Update Merge Request | update_merge_request |
Update a merge request. You can change the target branch, edit the title, or even close the MR. | Yes | Yes |
| Update Task Description | update_task_description |
Update the description of a task. | Yes | Yes |
| Update Vulnerability Severity | update_vulnerability_severity |
Update the severity level of vulnerabilities in a project. | Yes | Yes |
| Update Work Item | update_work_item |
Update an existing work item in a group or project. Quick actions are not supported. | Yes | Yes |
Summary: 78 tools work in both environments. 10 tools (filesystem/shell) require the IDE extension.
Custom Agents page — Brief note in the tool selection section:
Note: Some tools require the IDE extension (VS Code, JetBrains, Visual Studio) and are not available in Web UI. See Agent Tools for the complete availability matrix.
Source Code Reference (for maintainability)
The IDE-only determination can be derived programmatically:
-
Tool definitions:
ee/lib/ai/catalog/built_in_tool_definitions.rb -
Local action handlers:
gitlab-lsp/.../executors/node/actions/
Tools with matching handlers in the LSP actions/ directory require local execution → IDE-only. All others use GitLab API → work everywhere.
Context
I discovered this while building a Custom Agent to process JSON files. After debugging:
- Web UI agents receive full tool schemas for available tools — they work correctly
- Filesystem tools simply aren't advertised to the agent in Web UI (expected, given the architecture)
- The architecture doc explains this clearly, but it's in the engineering handbook rather than user docs
Once I understood the model, I redesigned using list_repository_tree and get_repository_file instead. The capability is there — the documentation just needs to surface it.