> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhands.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Agent Profile

> Get a stored profile — secret-free at rest, nothing to mask.

Unlike the LLM-profile GET in ``org_profiles``, there is no
``X-Expose-Secrets`` handling here at all: the profile carries only
references (``llm_profile_ref``, ``mcp_server_refs``) and a
``disabled_skills`` deny-list of names.



## OpenAPI

````yaml /openapi/openhands-cloud.json get /api/agent-profiles/{name}
openapi: 3.1.0
info:
  title: OpenHands
  description: 'OpenHands: Code Less, Make More'
  version: 0.0.1
servers: []
security: []
paths:
  /api/agent-profiles/{name}:
    get:
      tags:
        - Agent Profiles
      summary: Get Agent Profile
      description: |-
        Get a stored profile — secret-free at rest, nothing to mask.

        Unlike the LLM-profile GET in ``org_profiles``, there is no
        ``X-Expose-Secrets`` handling here at all: the profile carries only
        references (``llm_profile_ref``, ``mcp_server_refs``) and a
        ``disabled_skills`` deny-list of names.
      operationId: get_agent_profile_api_agent_profiles__name__get
      parameters:
        - name: name
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$
            title: Name
        - name: org_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            title: Org Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentProfileDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    AgentProfileDetailResponse:
      properties:
        name:
          type: string
          title: Name
        profile:
          oneOf:
            - $ref: '#/components/schemas/OpenHandsAgentProfile'
            - $ref: '#/components/schemas/ACPAgentProfile'
          title: Profile
      type: object
      required:
        - name
        - profile
      title: AgentProfileDetailResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    OpenHandsAgentProfile:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 2
        id:
          type: string
          format: uuid
          title: Id
          description: >-
            Stable provenance handle for this profile. Conversations record this
            UUID; it never changes, even when the profile is renamed.
        name:
          type: string
          minLength: 1
          title: Name
          description: Human-facing, renameable key shown in the profile picker.
        revision:
          type: integer
          minimum: 0
          title: Revision
          description: Monotonic revision counter, bumped on each saved edit.
          default: 0
        mcp_server_refs:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mcp Server Refs
          description: >-
            Which of the user's globally configured MCP servers to expose. null
            = all; [] = none; a non-null list = filter to the named keys.
        agent_kind:
          type: string
          const: openhands
          title: Agent Kind
          description: >-
            Discriminator for the ``AgentProfile`` union. ``'openhands'``
            selects the standard built-in OpenHands agent.
          default: openhands
        llm_profile_ref:
          type: string
          minLength: 1
          title: Llm Profile Ref
          description: >-
            Name of the saved LLM profile to resolve for this agent. The profile
            itself stores no LLM credential — it lives on the referenced LLM
            profile.
        agent:
          type: string
          title: Agent
          description: Agent class to build.
          default: CodeActAgent
        tools:
          anyOf:
            - items:
                $ref: '#/components/schemas/openhands__sdk__tool__spec__Tool'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            Tool selection for the resolved agent. None (the default) = the
            server's standard tool set; [] = an explicitly bare agent; a
            non-empty list is used exactly as given.
        system_message_suffix:
          anyOf:
            - type: string
            - type: 'null'
          title: System Message Suffix
          description: Optional suffix appended to the system prompt.
        disabled_skills:
          items:
            type: string
          type: array
          title: Disabled Skills
          description: >-
            Names of server-discovered skills to EXCLUDE from this agent's
            prompt — a deny-list over the discovered catalog. [] (the default) =
            all discovered skills; a listed name that is absent from the catalog
            is simply a no-op, so the field never fails a launch when the
            catalog drifts. Replaces the former allow-list ``skill_refs``
            (#4017): skills are discovered from many incomplete sources, so
            exclusion is the only selection model that can't dangle.
        condenser:
          oneOf:
            - $ref: '#/components/schemas/LLMSummarizingCondenserSettings'
            - $ref: '#/components/schemas/NoOpCondenserSettings'
          title: Condenser
          description: Condenser settings for the agent.
        verification:
          $ref: '#/components/schemas/ProfileVerificationSettings'
          description: Critic/verification policy (secret-free; no critic_api_key).
        enable_sub_agents:
          type: boolean
          title: Enable Sub Agents
          description: Enable sub-agent delegation via TaskToolSet.
          default: false
        enable_switch_llm_tool:
          type: boolean
          title: Enable Switch Llm Tool
          description: >-
            Enable the built-in switch_llm tool for switching between saved LLM
            profiles. Defaults True to match the global agent settings default
            (AgentSettingsConfig.enable_switch_llm_tool).
          default: true
        tool_concurrency_limit:
          type: integer
          minimum: 1
          title: Tool Concurrency Limit
          description: >-
            Maximum number of tool calls to execute concurrently per agent step.
            1 = sequential (default).
          default: 1
      additionalProperties: false
      type: object
      required:
        - name
        - llm_profile_ref
      title: OpenHandsAgentProfile
      description: >-
        ``agent_kind="openhands"`` profile — references an LLM profile by name.


        Mirrors the configurable surface of

        :class:`~openhands.sdk.settings.model.OpenHandsAgentSettings`, except
        the

        concrete ``llm`` is replaced by :attr:`llm_profile_ref` (resolved
        against

        the LLM profile store) and ``mcp_config`` by the inherited

        :attr:`~AgentProfileBase.mcp_server_refs`.
    ACPAgentProfile:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 2
        id:
          type: string
          format: uuid
          title: Id
          description: >-
            Stable provenance handle for this profile. Conversations record this
            UUID; it never changes, even when the profile is renamed.
        name:
          type: string
          minLength: 1
          title: Name
          description: Human-facing, renameable key shown in the profile picker.
        revision:
          type: integer
          minimum: 0
          title: Revision
          description: Monotonic revision counter, bumped on each saved edit.
          default: 0
        mcp_server_refs:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mcp Server Refs
          description: >-
            Which of the user's globally configured MCP servers to expose. null
            = all; [] = none; a non-null list = filter to the named keys.
        agent_kind:
          type: string
          const: acp
          title: Agent Kind
          description: >-
            Discriminator for the ``AgentProfile`` union. ``'acp'`` selects an
            ACP-delegating agent.
          default: acp
        acp_server:
          type: string
          enum:
            - claude-code
            - codex
            - gemini-cli
            - custom
          title: Acp Server
          description: >-
            Which ACP-compatible backend to launch. The provider's credential
            env-var name is derived from this via the ACP_PROVIDERS registry.
          default: claude-code
        acp_model:
          anyOf:
            - type: string
            - type: 'null'
          title: Acp Model
          description: >-
            Model identifier for the ACP server (e.g. 'claude-opus-4-8'). Leave
            blank to let the server pick its default.
        acp_session_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Acp Session Mode
          description: >-
            Session mode ID (e.g. 'bypassPermissions'). Leave blank to
            auto-detect from the ACP server type.
        acp_prompt_timeout:
          type: number
          exclusiveMinimum: 0
          title: Acp Prompt Timeout
          description: >-
            Inactivity timeout (seconds) for a single ACP prompt() round-trip;
            resets on every update from the server.
          default: 1800
        acp_startup_timeout:
          type: number
          exclusiveMinimum: 0
          title: Acp Startup Timeout
          description: >-
            Timeout (seconds) for ACP server startup: spawn,
            initialize/authenticate, and new_session()/load_session().
          default: 90
        acp_command:
          anyOf:
            - type: string
            - type: 'null'
          title: Acp Command
          description: >-
            Optional explicit command to launch the ACP subprocess. Leave blank
            to use the default for ``acp_server``.
        acp_args:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Acp Args
          description: Additional arguments appended to the ACP server command.
      additionalProperties: false
      type: object
      required:
        - name
      title: ACPAgentProfile
      description: >-
        ``agent_kind="acp"`` profile — names an ACP backend, stores no
        credential.


        There is no ``llm_profile_ref`` and no embedded credential: the ACP

        subprocess makes its own model calls, and the provider's credential

        (env-var name) is derived from :attr:`acp_server` via the

        :data:`~openhands.sdk.settings.acp_providers.ACP_PROVIDERS` registry.
        The

        value rides the conversation secrets channel, never the profile.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    openhands__sdk__tool__spec__Tool:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Name of the tool class, e.g., 'TerminalTool'. Import it from an
            `openhands.tools.<module>` subpackage.
          examples:
            - TerminalTool
            - FileEditorTool
            - TaskTrackerTool
        params:
          additionalProperties: true
          type: object
          title: Params
          description: >-
            Parameters for the tool's .create() method, e.g., {'working_dir':
            '/app'}
          examples:
            - working_dir: /workspace
      type: object
      required:
        - name
      title: Tool
      description: |-
        Defines a tool to be initialized for the agent.

        This is only used in agent-sdk for type schema for server use.
    LLMSummarizingCondenserSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable conversation memory condensation.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable memory condensation
            prominence: critical
        max_size:
          type: integer
          minimum: 20
          title: Max Size
          description: >-
            Maximum number of events kept before the condenser runs. Kept on the
            base settings class for compatibility; concrete condenser-settings
            variants may opt out when this does not apply.
          default: 240
          openhands_settings:
            depends_on:
              - enabled
            label: Max size
            prominence: minor
        condenser_kind:
          type: string
          const: llm_summarizing
          title: Condenser Kind
          description: >-
            Discriminator for the condenser settings union.
            ``'llm_summarizing'`` selects the default LLM summarizing condenser.
          default: llm_summarizing
          openhands_settings:
            depends_on: []
            prominence: minor
        max_tokens:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Tokens
          description: >-
            Maximum number of tokens allowed before the condenser runs. When
            unset, condensation is only based on event count.
          openhands_settings:
            depends_on:
              - enabled
            label: Max tokens
            prominence: minor
        keep_first:
          type: integer
          minimum: 0
          title: Keep First
          description: Minimum number of initial events to preserve before condensation.
          default: 2
          openhands_settings:
            depends_on:
              - enabled
            label: Keep first
            prominence: minor
        minimum_progress:
          type: number
          exclusiveMaximum: 1
          exclusiveMinimum: 0
          title: Minimum Progress
          description: >-
            Minimum fraction of events that must be condensed for condensation
            to be considered successful.
          default: 0.1
          openhands_settings:
            depends_on:
              - enabled
            label: Minimum progress
            prominence: minor
        hard_context_reset_max_retries:
          type: integer
          exclusiveMinimum: 0
          title: Hard Context Reset Max Retries
          description: Number of hard context reset attempts before raising an error.
          default: 5
          openhands_settings:
            depends_on:
              - enabled
            label: Hard reset retries
            prominence: minor
        hard_context_reset_context_scaling:
          type: number
          exclusiveMaximum: 1
          exclusiveMinimum: 0
          title: Hard Context Reset Context Scaling
          description: >-
            Factor used to reduce event string size after a hard context reset
            summarization failure.
          default: 0.8
          openhands_settings:
            depends_on:
              - enabled
            label: Hard reset scaling
            prominence: minor
      type: object
      title: LLMSummarizingCondenserSettings
      description: Settings for the default LLM summarizing condenser.
    NoOpCondenserSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable conversation memory condensation.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable memory condensation
            prominence: critical
        condenser_kind:
          type: string
          const: no_op
          title: Condenser Kind
          description: >-
            Discriminator for the condenser settings union. ``'no_op'`` selects
            a condenser that leaves conversation views unchanged.
          default: no_op
          openhands_settings:
            depends_on: []
            prominence: minor
      type: object
      title: NoOpCondenserSettings
      description: Settings for a condenser that leaves conversation views unchanged.
    ProfileVerificationSettings:
      properties:
        critic_enabled:
          type: boolean
          title: Critic Enabled
          default: false
        critic_mode:
          type: string
          enum:
            - finish_and_message
            - all_actions
          title: Critic Mode
          default: finish_and_message
        enable_iterative_refinement:
          type: boolean
          title: Enable Iterative Refinement
          default: false
        critic_threshold:
          type: number
          maximum: 1
          minimum: 0
          title: Critic Threshold
          default: 0.6
        max_refinement_iterations:
          type: integer
          minimum: 1
          title: Max Refinement Iterations
          default: 3
        critic_server_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Critic Server Url
        critic_model_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Critic Model Name
      type: object
      title: ProfileVerificationSettings
      description: >-
        Secret-free critic/refinement policy for a profile.


        The non-credential subset of

        :class:`~openhands.sdk.settings.model.VerificationSettings`:
        ``critic_api_key``

        is omitted so the profile holds no secret. The critic reuses the
        resolved

        LLM profile's key (the existing ``critic_api_key=None`` behavior).
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-Access-Token

````