Write service file
write_service_fileWrite or replace a small service file (≤1 MiB) with compare-and-swap: pass expectedVersion/SHA256 to update safely or createOnly for a new file; conflicts return 409.
Instructions
Write a small file (at most 1 MiB) with compare-and-swap. Pass the content as text (UTF-8) or contentBase64, and exactly one precondition: expectedVersion or expectedSha256 from stat_service_file/read_service_file to replace an existing file, or createOnly=true for a new one. A file changed meanwhile answers 409 filesVersionConflict (+currentVersion) and is not touched; re-read it instead of forcing. A replaced file keeps its owner, mode, SELinux label and ACL. Use upload_service_file for larger files. A slow guest answers 202 with an operation: this tool polls it itself and returns the final answer, or, after waitSeconds, the operationId to continue with get_service_file_operation (never repeat the call). Requires files:manage on a FULL-access API key as an explicit grant; the hosted connector needs vm:files:write. Execution-equivalent targets (authorized_keys, cron, systemd units, sudoers, PAM, profile files) are refused to every API key (filesExecEquivalentScopeMissing). Availability: Firecracker servers need the updated guest agent (filesUnavailable reason agent_update_required; node_update_required while the host node is not updated yet) and Cloud VPS (KVM) servers need the VDS file-manager switch (reason feature_disabled while it is off); relay any unavailable reason verbatim and never work around it. A server whose 2FA lock is on answers 423.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Octal permission bits for a NEW file, e.g. 0644 | |
| path | Yes | Absolute path inside the server (UTF-8, at most 4096 bytes, no . or .. components) | |
| content | No | New content as UTF-8 text | |
| orderNo | Yes | Tenant-owned service order number, e.g. VP12345 | |
| createOnly | No | ||
| waitSeconds | No | How long this tool waits for a slow guest's operation before returning its operationId (default 30, recursive delete and extract 60) | |
| contentBase64 | No | New content as base64 (binary) | |
| expectedSha256 | No | ||
| expectedVersion | No | ||
| confirmSystemPath | No | Set true only after the user explicitly approved changing this operating-system path (otherwise 409 filesSystemPathConfirmRequired) |