{
  "file": "F33-sdk-remote-client.md",
  "bullet": "Create from a saved agent profile (`F33.conversation-create-profile`).",
  "ids": [
    "F33.conversation-create-profile"
  ],
  "line": 588,
  "script": "control-agent-server api PUT /api/settings/secrets --json '{\"name\": \"QA_F33_PROFILE_IN\", \"value\": \"qa-f33-in-value\"}' --expect 200\ncontrol-agent-server api PUT /api/settings/secrets --json '{\"name\": \"QA_F33_PROFILE_OUT\", \"value\": \"qa-f33-out-value\"}' --expect 200\ncontrol-agent-server api POST /api/agent-profiles/qa-f33-profile --expect 201 \\\n  --json '{\"llm_profile_ref\": \"deepseek-flash\", \"tools\": [], \"secret_refs\": [\"QA_F33_PROFILE_IN\"], \"system_message_suffix\": \"qa-f33 profile suffix\"}'\nPROFILE=$(control-agent-server api GET /api/agent-profiles/qa-f33-profile --field profile.id)\ncontrol-agent-server exec --env PYTHONPATH=\"$F33\" --env PROFILE=\"$PROFILE\" --save F33.conversation-create-profile/probe -- .venv/bin/python - <<'PY'\nimport os\nimport uuid\nimport f33\nfrom openhands.sdk import RemoteConversation, TextContent\nfrom openhands.sdk.conversation.request import SendMessageRequest, StartConversationRequest\nfrom openhands.sdk.workspace import LocalWorkspace\n\nws = f33.workspace(\"profile\")\nprofile = uuid.UUID(os.environ[\"PROFILE\"])\neverything = ws.get_secrets()\nscoped = ws.get_secrets(agent_profile_id=str(profile))\nassert {\"QA_F33_PROFILE_IN\", \"QA_F33_PROFILE_OUT\"} <= set(everything) and list(scoped) == [\"QA_F33_PROFILE_IN\"], (everything, scoped)\nrequest = StartConversationRequest(agent_profile_id=profile, workspace=LocalWorkspace(working_dir=ws.working_dir), autotitle=False,\n                                   initial_message=SendMessageRequest(content=[TextContent(text=\"Reply with one word: ready\")], run=True))\nconv = RemoteConversation.create(ws, request, visualizer=None)\nassert (conv.agent.llm.model, conv.agent.tools) == (\"deepseek/deepseek-flash\", []), conv.agent\nconv.run(timeout=300)\nassert conv.state.execution_status.value == \"finished\", conv.state.execution_status\nf33.emit(\"profile\", cid=str(conv.id))\nconv.close()\nPY\nPCID=$(jq -r .cid \"$F33/profile.json\")\ncontrol-agent-server api GET \"<redacted:session-cookie>/$PCID\" --check execution_status eq finished --check launched_agent_profile.agent_profile_id eq \"$PROFILE\" \\\n  --check launched_agent_profile.secret_refs len-eq 1 --check agent.tools len-eq 0 --check agent.llm.model eq deepseek/deepseek-flash \\\n  --save F33.conversation-create-profile/get\ncontrol-agent-server conversation events \"$PCID\" --kinds SystemPromptEvent --contains 'qa-f33 profile suffix' --expect-count 1\ncontrol-agent-server api GET /api/settings/secrets --query agent_profile_id=\"$PROFILE\" --check secrets len-eq 1 \\\n  --check secrets.0.name eq QA_F33_PROFILE_IN --save F33.conversation-create-profile/scoped-secrets\ncontrol-agent-server api DELETE /api/agent-profiles/qa-f33-profile --expect 200\ncontrol-agent-server api DELETE /api/settings/secrets/QA_F33_PROFILE_IN --expect 200\ncontrol-agent-server api DELETE /api/settings/secrets/QA_F33_PROFILE_OUT --expect 200\n",
  "exit_code": 0,
  "elapsed_ms": 131316,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"PUT\",\n    \"path\": \"/api/settings/secrets\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"name\": \"QA_F33_PROFILE_IN\",\n      \"value\": \"qa-f33-in-value\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"47\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"QA_F33_PROFILE_IN\",\n      \"description\": null\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 779\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"PUT\",\n    \"path\": \"/api/settings/secrets\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"name\": \"QA_F33_PROFILE_OUT\",\n      \"value\": \"qa-f33-out-value\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"48\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"QA_F33_PROFILE_OUT\",\n      \"description\": null\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 389\n}\n{\n  \"ok\": true,\n  \"status\": 201,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/agent-profiles/qa-f33-profile\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"llm_profile_ref\": \"deepseek-flash\",\n      \"tools\": [],\n      \"secret_refs\": [\n        \"QA_F33_PROFILE_IN\"\n      ],\n      \"system_message_suffix\": \"qa-f33 profile suffix\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 201,\n    \"headers\": {\n      \"content-length\": \"74\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f33-profile\",\n      \"message\": \"Agent profile 'qa-f33-profile' saved\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 867\n}\n{\n  \"ok\": true,\n  \"exit_code\": 0,\n  \"elapsed_ms\": 79995,\n  \"stdout_tail\": \"{\\\"cid\\\": \\\"d728b698-aa2d-45dc-be21-88deabc90ce6\\\"}\\n\",\n  \"stderr_tail\": \"[10/13/26 02:30:53] INFO     Conversation is already remote_conversation.py:1333\\n                             running; skipping run                              \\n                             trigger                                            \\n[10/13/26 02:30:54] INFO     Run completed via       remote_conversation.py:1408\\n                             post-run WebSocket                                 \\n                             state update (status:                              \\n                             finished, elapsed:                                 \\n                             0.0s)                                              \\n\",\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/evidence/F33.conversation-create-profile/probe.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"<redacted:session-cookie>/d728b698-aa2d-45dc-be21-88deabc90ce6\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"6312\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"id\": \"d728b698-aa2d-45dc-be21-88deabc90ce6\",\n      \"workspace\": {\n        \"working_dir\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/fixtures/qa-f33/profile\",\n        \"kind\": \"LocalWorkspace\"\n      },\n      \"persistence_dir\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/server/workspace/conversations/d728b698aa2d45dcbe2188deabc90ce6\",\n      \"max_iterations\": 500,\n      \"stuck_detection\": true,\n      \"execution_status\": \"finished\",\n      \"confirmation_policy\": {\n        \"kind\": \"NeverConfirm\"\n      },\n      \"security_analyzer\": null,\n      \"activated_knowledge_skills\": [],\n      \"invoked_skills\": [],\n      \"blocked_actions\": {},\n      \"blocked_messages\": {},\n      \"last_user_message_id\": \"0e698bbb-6b3d-4914-9b84-193f20e7dc00\",\n      \"leaf_event_id\": \"0f6a9728-72a8-46e4-afe1-9a2681405150\",\n      \"stats\": {\n        \"usage_to_metrics\": {\n          \"default\": {\n            \"model_name\": \"deepseek/deepseek-flash\",\n            \"accumulated_cost\": 0.000389256,\n            \"max_budget_per_task\": null,\n            \"accumulated_token_usage\": {\n              \"model\": \"deepseek/deepseek-flash\",\n              \"prompt_tokens\": 9694,\n              \"completion_tokens\": 2,\n              \"cache_read_tokens\": 8576,\n              \"cache_write_tokens\": 0,\n              \"reasoning_tokens\": 0,\n              \"context_window\": 1000000,\n              \"per_turn_token\": 9696,\n              \"response_id\": \"\"\n            },\n            \"costs\": [\n              {\n                \"model\": \"deepseek/deepseek-flash\",\n                \"cost\": 0.000389256,\n                \"timestamp\": 1791858654.0491843\n              }\n            ],\n            \"response_latencies\": [\n              {\n                \"model\": \"deepseek/deepseek-flash\",\n                \"latency\": 1.4684014320373535,\n                \"response_id\": \"972b7859-c075-481c-8787-70125d91becc\"\n              }\n            ],\n            \"token_usages\": [\n              {\n                \"model\": \"deepseek/deepseek-flash\",\n                \"prompt_tokens\": 9694,\n                \"completion_tokens\": 2,\n                \"cache_read_tokens\": 8576,\n                \"cache_write_tokens\": 0,\n                \"reasoning_tokens\": 0,\n                \"context_window\": 1000000,\n                \"per_turn_token\": 9696,\n                \"response_id\": \"972b7859-c075-481c-8787-70125d91becc\"\n              }\n            ]\n          },\n          \"condenser\": {\n            \"model_name\": \"deepseek/deepseek-flash\",\n            \"accumulated_cost\": 0.0,\n            \"max_budget_per_task\": null,\n            \"accumulated_token_usage\": {\n              \"model\": \"deepseek/deepseek-flash\",\n              \"prompt_tokens\": 0,\n              \"completion_tokens\": 0,\n              \"cache_read_tokens\": 0,\n              \"cache_write_tokens\": 0,\n              \"reasoning_tokens\": 0,\n              \"context_window\": 0,\n              \"per_turn_token\": 0,\n              \"response_id\": \"\"\n            },\n            \"costs\": [],\n            \"response_latencies\": [],\n            \"token_usages\": []\n          }\n        }\n      },\n      \"secret_registry\": {\n        \"secret_sources\": {}\n      },\n      \"agent_state\": {},\n      \"hook_config\": null,\n      \"title\": null,\n      \"metrics\": null,\n      \"created_at\": \"2026-10-13T02:30:50.163424Z\",\n      \"updated_at\": \"2026-10-13T02:30:54.257787Z\",\n      \"forked_from_conversation_id\": null,\n      \"forked_from_event_id\": null,\n      \"parent_conversation_id\": null,\n      \"sub_conversation_ids\": [],\n      \"tags\": {},\n      \"current_model_id\": null,\n      \"available_models\": [],\n      \"supports_runtime_model_switch\": false,\n      \"launched_agent_profile\": {\n        \"agent_profile_id\": \"b9b9c37f-6052-48fe-ba61-bfa4b3a604cc\",\n        \"revision\": 0,\n        \"secret_refs\": [\n          \"QA_F33_PROFILE_IN\"\n        ]\n      },\n      \"agent\": {\n        \"llm\": {\n          \"model\": \"deepseek/deepseek-flash\",\n          \"api_key\": null,\n          \"provider_connection_id\": null,\n          \"auth_type\": \"api_key\",\n          \"subscription_vendor\": null,\n          \"base_url\": null,\n          \"api_version\": null,\n          \"aws_access_key_id\": null,\n          \"aws_secret_access_key\": null,\n          \"aws_session_token\": null,\n          \"aws_region_name\": null,\n          \"aws_profile_name\": null,\n          \"aws_role_name\": null,\n          \"aws_session_name\": null,\n          \"aws_bedrock_runtime_endpoint\": null,\n          \"openrouter_site_url\": \"https://docs.all-hands.dev/\",\n          \"openrouter_app_name\": \"OpenHands\",\n          \"num_retries\": 5,\n          \"retry_multiplier\": 8.0,\n          \"retry_min_wait\": 8,\n          \"retry_max_wait\": 64,\n          \"timeout\": 300,\n          \"stream_idle_timeout\": 300.0,\n          \"max_message_chars\": 30000,\n          \"temperature\": null,\n          \"top_p\": null,\n          \"top_k\": null,\n          \"max_input_tokens\": null,\n          \"max_output_tokens\": null,\n          \"model_canonical_name\": null,\n          \"api_mode\": \"auto\",\n          \"capability_overrides\": {},\n          \"extra_headers\": null,\n          \"input_cost_per_token\": null,\n          \"output_cost_per_token\": null,\n          \"ollama_base_url\": null,\n          \"stream\": true,\n          \"drop_params\": true,\n          \"disable_vision\": null,\n          \"disable_stop_word\": false,\n          \"caching_prompt\": true,\n          \"log_completions\": false,\n          \"log_completions_folder\": \"logs/completions\",\n          \"custom_tokenizer\": null,\n          \"native_tool_calling\": true,\n          \"force_string_serializer\": null,\n          \"inline_image_urls\": null,\n          \"reasoning_effort\": \"high\",\n          \"reasoning_summary\": null,\n          \"enable_encrypted_reasoning\": true,\n          \"prompt_cache_retention\": \"24h\",\n          \"extended_thinking_budget\": 200000,\n          \"seed\": null,\n          \"usage_id\": \"default\",\n          \"litellm_extra_body\": {},\n          \"is_subscription\": false\n        },\n        \"tools\": [],\n        \"mcp_config\": {},\n        \"filter_tools_regex\": null,\n        \"include_default_tools\": [\n          \"FinishTool\",\n          \"ThinkTool\"\n        ],\n        \"agent_context\": {\n          \"skills\": [],\n          \"system_message_suffix\": \"qa-f33 profile suffix\",\n          \"user_message_suffix\": null,\n          \"load_user_skills\": false,\n          \"load_public_skills\": false,\n          \"marketplace_path\": \"marketplaces/default.json\",\n          \"registered_marketplaces\": [],\n          \"load_project_skills\": true,\n          \"load_memory\": false,\n          \"disabled_skills\": [],\n          \"secrets\": null,\n          \"current_datetime\": \"2026-10-13T02:30:50.075979Z\"\n        },\n        \"system_prompt\": null,\n        \"system_prompt_filename\": \"system_prompt.j2\",\n        \"security_policy_filename\": \"security_policy.j2\",\n        \"system_prompt_kwargs\": {\n          \"llm_security_analyzer\": true\n        },\n        \"condenser\": {\n          \"llm\": {\n            \"model\": \"deepseek/deepseek-flash\",\n            \"api_key\": null,\n            \"provider_connection_id\": null,\n            \"auth_type\": \"api_key\",\n            \"subscription_vendor\": null,\n            \"base_url\": null,\n            \"api_version\": null,\n            \"aws_access_key_id\": null,\n            \"aws_secret_access_key\": null,\n            \"aws_session_token\": null,\n            \"aws_region_name\": null,\n            \"aws_profile_name\": null,\n            \"aws_role_name\": null,\n            \"aws_session_name\": null,\n            \"aws_bedrock_runtime_endpoint\": null,\n            \"openrouter_site_url\": \"https://docs.all-hands.dev/\",\n            \"openrouter_app_name\": \"OpenHands\",\n            \"num_retries\": 5,\n            \"retry_multiplier\": 8.0,\n            \"retry_min_wait\": 8,\n            \"retry_max_wait\": 64,\n            \"timeout\": 300,\n            \"stream_idle_timeout\": 300.0,\n            \"max_message_chars\": 30000,\n            \"temperature\": null,\n            \"top_p\": null,\n            \"top_k\": null,\n            \"max_input_tokens\": null,\n            \"max_output_tokens\": null,\n            \"model_canonical_name\": null,\n            \"api_mode\": \"auto\",\n            \"capability_overrides\": {},\n            \"extra_headers\": null,\n            \"input_cost_per_token\": null,\n            \"output_cost_per_token\": null,\n            \"ollama_base_url\": null,\n            \"stream\": false,\n            \"drop_params\": true,\n            \"disable_vision\": null,\n            \"disable_stop_word\": false,\n            \"caching_prompt\": true,\n            \"log_completions\": false,\n            \"log_completions_folder\": \"logs/completions\",\n            \"custom_tokenizer\": null,\n            \"native_tool_calling\": true,\n            \"force_string_serializer\": null,\n            \"inline_image_urls\": null,\n            \"reasoning_effort\": \"high\",\n            \"reasoning_summary\": null,\n            \"enable_encrypted_reasoning\": true,\n            \"prompt_cache_retention\": \"24h\",\n            \"extended_thinking_budget\": 200000,\n            \"seed\": null,\n            \"usage_id\": \"condenser\",\n            \"litellm_extra_body\": {},\n            \"is_subscription\": false\n          },\n          \"max_size\": 240,\n          \"max_tokens\": null,\n          \"keep_first\": 2,\n          \"minimum_progress\": 0.1,\n          \"hard_context_reset_max_retries\": 5,\n          \"hard_context_reset_context_scaling\": 0.8,\n          \"kind\": \"LLMSummarizingCondenser\"\n        },\n        \"critic\": null,\n        \"tool_concurrency_limit\": 1,\n        \"persona\": null,\n        \"kind\": \"Agent\"\n      },\n      \"client_tools\": [],\n      \"tool_module_qualnames\": {},\n      \"runtime_info\": {\n        \"runtime_status\": \"available\",\n        \"can_resume\": true,\n        \"runtime_error\": null\n      }\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 1726,\n  \"checks\": [\n    {\n      \"check\": \"execution_status eq finished\",\n      \"ok\": true,\n      \"actual\": \"finished\"\n    },\n    {\n      \"check\": \"launched_agent_profile.agent_profile_id eq b9b9c37f-6052-48fe-ba61-bfa4b3a604cc\",\n      \"ok\": true,\n      \"actual\": \"b9b9c37f-6052-48fe-ba61-bfa4b3a604cc\"\n    },\n    {\n      \"check\": \"launched_agent_profile.secret_refs len-eq 1\",\n      \"ok\": true,\n      \"actual\": \"[\\\"QA_F33_PROFILE_IN\\\"]\"\n    },\n    {\n      \"check\": \"agent.tools len-eq 0\",\n      \"ok\": true,\n      \"actual\": \"[]\"\n    },\n    {\n      \"check\": \"agent.llm.model eq deepseek/deepseek-flash\",\n      \"ok\": true,\n      \"actual\": \"deepseek/deepseek-flash\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/evidence/F33.conversation-create-profile/get.json\"\n}\n{\n  \"ok\": true,\n  \"id\": \"d728b698-aa2d-45dc-be21-88deabc90ce6\",\n  \"total\": 7,\n  \"kinds\": {\n    \"SystemPromptEvent\": 1,\n    \"MessageEvent\": 2,\n    \"ConversationStateUpdateEvent\": 4\n  },\n  \"matching\": 1,\n  \"events\": [\n    {\n      \"id\": \"89d65091-fee2-4b7b-bb0f-0a8ce05c777d\",\n      \"kind\": \"SystemPromptEvent\",\n      \"source\": \"agent\",\n      \"timestamp\": \"2026-10-13T02:30:51.057672\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/settings/secrets\",\n    \"query\": [\n      [\n        \"agent_profile_id\",\n        \"b9b9c37f-6052-48fe-ba61-bfa4b3a604cc\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"61\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"secrets\": [\n        {\n          \"name\": \"QA_F33_PROFILE_IN\",\n          \"description\": null\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 1649,\n  \"checks\": [\n    {\n      \"check\": \"secrets len-eq 1\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"QA_F33_PROFILE_IN\\\", \\\"description\\\": null}]\"\n    },\n    {\n      \"check\": \"secrets.0.name eq QA_F33_PROFILE_IN\",\n      \"ok\": true,\n      \"actual\": \"QA_F33_PROFILE_IN\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/evidence/F33.conversation-create-profile/scoped-secrets.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"DELETE\",\n    \"path\": \"/api/agent-profiles/qa-f33-profile\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"76\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f33-profile\",\n      \"message\": \"Agent profile 'qa-f33-profile' deleted\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 422\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"DELETE\",\n    \"path\": \"/api/settings/secrets/QA_F33_PROFILE_IN\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"16\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"deleted\": true\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 1052\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"DELETE\",\n    \"path\": \"/api/settings/secrets/QA_F33_PROFILE_OUT\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"16\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"deleted\": true\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 550\n}\n",
  "stderr": ""
}
