Skip to content
v0.8.38GitHub

ReferenceCLI reference

CLI reference

Every flag s3ctl accepts, with its default, grouped by what it's for.

Applies to v0.8.38stable, released 4 November 2026Release notes →

s3ctl [flags]
s3ctl --help # the commands you'll use most
s3ctl --help-full # every flag, template and CSV column

Flags win over the JSON config, and the config wins over built-in defaults. Most flags have a config key of the same name in snake case, so --enable-versioning becomes enable_versioning; the tables note the exceptions. Without --config, s3ctl reads $XDG_CONFIG_HOME/s3ctl/config.json, then $HOME/.config/s3ctl/config.json.

Which provider to use, which buckets to work on, and where the rest of the settings come from. Batch provisioning lists the CSV columns.

FlagDefaultDescription
-c--config PATHNonePath to a JSON config file. Flag only.
--provider NAMEs3Provisioning provider: s3 or ovh.
-b--bucket NAMErepeatableNoneBucket name to create or delete. In the config, bucket for one or buckets for a list.
--batch-file PATHNoneCSV file describing multiple bucket requests.

Used by the s3 provider. When neither a profile nor explicit keys are set, the AWS SDK’s standard credential discovery applies. Use a profile or explicit keys, not both.

FlagDefaultDescription
--endpoint URLNoneS3 endpoint URL for S3-compatible services.
--region NAMEus-east-1Bucket region.
--profile NAMENoneAWS profile name for SDK configuration.
--access-key IDNoneAccess key for the S3 API client. Needs --secret-key.
--secret-key SECRETNoneSecret key for the S3 API client. Needs --access-key.
--session-token TOKENNoneSession token for temporary credentials. Needs both keys.
--insecureNoneDisable TLS certificate verification.

Use either a bucket policy file or a template, not both.

FlagDefaultDescription
--enable-versioningNoneEnable bucket versioning after creation.
--bucket-policy-file PATHNonePath to a JSON bucket policy document.
--bucket-policy-template NAMENoneBuilt-in bucket policy template: deny-insecure-transport or public-read.

For the s3 provider these go through the IAM API. See scoped credentials.

FlagDefaultDescription
--create-scoped-credentialsNoneCreate a scoped IAM-style user and access key for each bucket.
--credential-policy-template NAMEbucket-readwritePolicy for the scoped user: bucket-readonly, bucket-readwrite or bucket-admin.
--iam-endpoint URLNoneIAM API endpoint, when it isn't AWS IAM.
--iam-user-name NAMENoneExplicit IAM user name, for a run with a single bucket.
--iam-user-prefix PREFIXNonePrefix for automatically generated IAM user names.
--iam-path PATHNoneIAM path for generated users.

Used with --provider ovh. When no OVHcloud authentication is set, go-ovh’s standard discovery applies, including ovh.conf.

FlagDefaultDescription
--ovh-service-name PROJECT_IDNonePublic Cloud project service name, the project's long ID.
--ovh-api-endpoint URLNoneOVHcloud API endpoint name or URL.
--ovh-client-id IDNoneOAuth2 client ID.
--ovh-client-secret SECRETNoneOAuth2 client secret.
--ovh-access-token TOKENNoneOVHcloud access token.
--ovh-application-key KEYNoneApplication key, for classic API credentials.
--ovh-application-secret SECRETNoneApplication secret, for classic API credentials.
--ovh-consumer-key KEYNoneConsumer key, for classic API credentials.
--ovh-s3-endpoint URLNoneOverride the S3 endpoint URL OVHcloud returns.
--ovh-user-role ROLEobjectstore_operatorPublic Cloud user role for created object storage users.
--ovh-storage-policy-role ROLEreadWriteAccess policy role: admin, deny, readOnly, readWrite or replication.
--ovh-encrypt-dataNoneEnable server-side encryption with OVH-managed keys.
--ovh-tag KEY=VALUErepeatableNoneTag to apply to OVHcloud containers. In the config, an ovh_tags object.
--ovh-rotate-credentialsNoneRotate each existing bucket's S3 credentials instead of creating containers.
--ovh-repair-policiesNoneReapply scoped S3 and container policies to existing bucket users without rotating credentials.

--delete, --ovh-rotate-credentials and --ovh-repair-policies are separate modes; use one at a time.

FlagDefaultDescription
--dry-runNoneShow the planned actions without making changes.
--deleteNoneDelete each bucket instead of creating it. Config key delete_bucket.
--forceNoneLet a delete remove bucket contents first. Without it, only empty buckets are deleted.
-o--output FORMATtextOutput format: text or json. Failures are JSON too when this is json.
--timeout DURATION10m0sOverall operation timeout, such as 30s, 5m or 1h.
-h--helpNoneShow the short reference. Flag only.
--help-fullNoneShow every flag, template and CSV column. Flag only.
--versionNoneShow version information. Flag only.