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

# Update user settings

> Changes the settings the body names, keeps every one it omits, and returns them all.

Use this tool when you need to:
- Change the agent or model the caller's new tasks default to
- Turn auto-archive on pull request merge or close, or ChatGPT apps on Codex tasks, on or off
- Choose how commits made for the caller are attributed

Examples:
- PATCH /user/settings {"default_agent_type": "claude-code", "default_model": "claude-opus-5-5"}
- PATCH /user/settings {"auto_archive_on_pr_merged": true, "commit_attribution": "aether_author"}

Hints:
- Every field is optional: default_agent_type (codex, claude-code or opencode), default_model, auto_archive_on_pr_merged, auto_archive_on_pr_closed, account_connectors_enabled and commit_attribution (person_author, aether_author or aether_only). A value outside its schema, an empty default_model included, is refused with 422.
- default_agent_type alone keeps the stored model when it runs on that agent, else takes the agent's default model; default_model alone moves to the agent the model requires.
- Refused with 400: a default_model of only spaces, a model that is unknown or retired or does not run on the default_agent_type given with it, a codex or claude-code default without the caller's usable connection for it, and, for a body naming neither agent field, a stored agent and model that no longer form a runnable pair.
- A commit_attribution that names the user (person_author, aether_author) requires their GitHub connection; without one the update is refused with 422 and code commit_attribution_github_required.
- A commit_attribution change, even to its current value, while the acting organization's commit attribution policy forces a value is refused with 409 and code commit_attribution_forced_by_org; the acting organization is the personal one for a session and the pinned one for an API key.
- Use getUserSettings instead to read them; use updateOrg instead to change an organization's commit attribution policy.
- Any authenticated caller may change their own.



## OpenAPI

````yaml api-reference/openapi.json PATCH /user/settings
openapi: 3.1.0
info:
  title: Aether API
  version: 0.1.0
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /user/settings:
    patch:
      tags:
        - user-settings
      summary: Update user settings
      description: >-
        Changes the settings the body names, keeps every one it omits, and
        returns them all.


        Use this tool when you need to:

        - Change the agent or model the caller's new tasks default to

        - Turn auto-archive on pull request merge or close, or ChatGPT apps on
        Codex tasks, on or off

        - Choose how commits made for the caller are attributed


        Examples:

        - PATCH /user/settings {"default_agent_type": "claude-code",
        "default_model": "claude-opus-5-5"}

        - PATCH /user/settings {"auto_archive_on_pr_merged": true,
        "commit_attribution": "aether_author"}


        Hints:

        - Every field is optional: default_agent_type (codex, claude-code or
        opencode), default_model, auto_archive_on_pr_merged,
        auto_archive_on_pr_closed, account_connectors_enabled and
        commit_attribution (person_author, aether_author or aether_only). A
        value outside its schema, an empty default_model included, is refused
        with 422.

        - default_agent_type alone keeps the stored model when it runs on that
        agent, else takes the agent's default model; default_model alone moves
        to the agent the model requires.

        - Refused with 400: a default_model of only spaces, a model that is
        unknown or retired or does not run on the default_agent_type given with
        it, a codex or claude-code default without the caller's usable
        connection for it, and, for a body naming neither agent field, a stored
        agent and model that no longer form a runnable pair.

        - A commit_attribution that names the user (person_author,
        aether_author) requires their GitHub connection; without one the update
        is refused with 422 and code commit_attribution_github_required.

        - A commit_attribution change, even to its current value, while the
        acting organization's commit attribution policy forces a value is
        refused with 409 and code commit_attribution_forced_by_org; the acting
        organization is the personal one for a session and the pinned one for an
        API key.

        - Use getUserSettings instead to read them; use updateOrg instead to
        change an organization's commit attribution policy.

        - Any authenticated caller may change their own.
      operationId: updateUserSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserSettingsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettings'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
          description: Forbidden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSettingsErrorResponse'
          description: Internal Server Error
components:
  schemas:
    UpdateUserSettingsRequest:
      additionalProperties: false
      properties:
        account_connectors_enabled:
          type: boolean
        auto_archive_on_pr_closed:
          type: boolean
        auto_archive_on_pr_merged:
          type: boolean
        commit_attribution:
          enum:
            - person_author
            - aether_author
            - aether_only
          type: string
        default_agent_type:
          $ref: '#/components/schemas/AgentType'
        default_model:
          minLength: 1
          type: string
      type: object
    UserSettings:
      additionalProperties: false
      properties:
        account_connectors_enabled:
          type: boolean
        auto_archive_on_pr_closed:
          type: boolean
        auto_archive_on_pr_merged:
          type: boolean
        commit_attribution:
          enum:
            - person_author
            - aether_author
            - aether_only
          type: string
        default_agent_type:
          $ref: '#/components/schemas/AgentType'
        default_model:
          minLength: 1
          type: string
      required:
        - default_agent_type
        - default_model
        - auto_archive_on_pr_merged
        - auto_archive_on_pr_closed
        - account_connectors_enabled
        - commit_attribution
      type: object
    UserSettingsErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - bad_gateway
            - bad_request
            - commit_attribution_forced_by_org
            - commit_attribution_github_required
            - conflict
            - forbidden
            - gateway_timeout
            - gone
            - internal_error
            - method_not_allowed
            - not_acceptable
            - not_found
            - not_implemented
            - payment_required
            - precondition_failed
            - rate_limited
            - request_canceled
            - request_timeout
            - request_too_large
            - service_unavailable
            - unauthenticated
            - unsupported_media_type
            - validation_failed
          minLength: 1
          type: string
        error:
          minLength: 1
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
      required:
        - error
        - code
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
            - account_deleting
            - agent_host_route_not_allowed
            - credential_kind_not_admitted
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    AgentType:
      description: >-
        The agent harness that runs a task, a profile or a connection:
        claude-code is Claude Code, codex is Codex, opencode is OpenCode.
      enum:
        - codex
        - claude-code
        - opencode
      type: string
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.