OpenHands · Agentic Access

OpenHands Agentic Access

x-agentic-access generated

OpenHands exposes 43 API operations that an AI agent could call, of which 15 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 28 read, 13 write, and 2 safety-critical.

2 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

AIAgentsAutonomousOpen SourceDeveloper ToolsSoftware EngineeringCode Generation
Operations: 43 Acting: 15 Human-in-the-loop: 2 Method: generated

By consequence

read 28 write 13 safety-critical 2

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
POST /api/conversations/{conversation_id}/stop safety-critical required
POST /api/reset-settings safety-critical required

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/openhands-openapi.json
description: Recommended x-agentic-access execution contracts, classified heuristically from
  the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
  audience per deployment. See research/curity/agentic-governance/.
summary:
  operations: 43
  by_action_class:
    connected: 28
    acting: 15
  by_consequence:
    read: 28
    write: 13
    safety-critical: 2
  human_in_the_loop_required: 2
operations:
- path: /api/options/models
  method: get
  operationId: get_litellm_models_api_options_models_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/options/agents
  method: get
  operationId: get_agents_api_options_agents_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/options/security-analyzers
  method: get
  operationId: get_security_analyzers_api_options_security_analyzers_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/options/config
  method: get
  operationId: get_config_api_options_config_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/list-files
  method: get
  operationId: list_files_api_conversations__conversation_id__list_files_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/select-file
  method: get
  operationId: select_file_api_conversations__conversation_id__select_file_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/zip-directory
  method: get
  operationId: zip_current_workspace_api_conversations__conversation_id__zip_directory_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/git/changes
  method: get
  operationId: git_changes_api_conversations__conversation_id__git_changes_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/git/diff
  method: get
  operationId: git_diff_api_conversations__conversation_id__git_diff_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/upload-files
  method: post
  operationId: upload_files_api_conversations__conversation_id__upload_files_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}/submit-feedback
  method: post
  operationId: submit_feedback_api_conversations__conversation_id__submit_feedback_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}/config
  method: get
  operationId: get_remote_runtime_config_api_conversations__conversation_id__config_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/events
  method: get
  operationId: search_events_api_conversations__conversation_id__events_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/events
  method: post
  operationId: add_event_api_conversations__conversation_id__events_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}/microagents
  method: get
  operationId: get_microagents_api_conversations__conversation_id__microagents_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations
  method: post
  operationId: new_conversation_api_conversations_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations
  method: get
  operationId: search_conversations_api_conversations_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}
  method: get
  operationId: get_conversation_api_conversations__conversation_id__get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}
  method: delete
  operationId: delete_conversation_api_conversations__conversation_id__delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}
  method: patch
  operationId: update_conversation_api_conversations__conversation_id__patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}/remember-prompt
  method: get
  operationId: get_prompt_api_conversations__conversation_id__remember_prompt_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/start
  method: post
  operationId: start_conversation_api_conversations__conversation_id__start_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/conversations/{conversation_id}/stop
  method: post
  operationId: stop_conversation_api_conversations__conversation_id__stop_post
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /api/settings
  method: get
  operationId: load_settings_api_settings_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/settings
  method: post
  operationId: store_settings_api_settings_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/reset-settings
  method: post
  operationId: reset_settings_api_reset_settings_post
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /api/add-git-providers
  method: post
  operationId: store_provider_tokens_api_add_git_providers_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/unset-provider-tokens
  method: post
  operationId: unset_provider_tokens_api_unset_provider_tokens_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/secrets
  method: get
  operationId: load_custom_secrets_names_api_secrets_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/secrets
  method: post
  operationId: create_custom_secret_api_secrets_post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/secrets/{secret_id}
  method: put
  operationId: update_custom_secret_api_secrets__secret_id__put
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/secrets/{secret_id}
  method: delete
  operationId: delete_custom_secret_api_secrets__secret_id__delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/user/installations
  method: get
  operationId: get_user_installations_api_user_installations_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/repositories
  method: get
  operationId: get_user_repositories_api_user_repositories_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/info
  method: get
  operationId: get_user_api_user_info_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/search/repositories
  method: get
  operationId: search_repositories_api_user_search_repositories_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/suggested-tasks
  method: get
  operationId: get_suggested_tasks_api_user_suggested_tasks_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/repository/branches
  method: get
  operationId: get_repository_branches_api_user_repository_branches_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/repository/{repository_name}/microagents
  method: get
  operationId: get_repository_microagents_api_user_repository__repository_name__microagents_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/repository/{repository_name}/microagents/content
  method: get
  operationId: get_repository_microagent_content_api_user_repository__repository_name__microagents_content_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/conversations/{conversation_id}/trajectory
  method: get
  operationId: get_trajectory_api_conversations__conversation_id__trajectory_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /alive
  method: get
  operationId: alive_alive_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /health
  method: get
  operationId: health_health_get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none