Arguments
The complete, version-specific list is always available with cats --help.
The options below are grouped by purpose and apply to the OpenAPI fuzzing
command unless noted otherwise. Most long options accept either --name=value
or --name value.
Contract and service
-c, --contract=FILEsupplies the OpenAPI contract.-s, --server=URLsupplies the base URL of the service.--contentType=TYPEoverrides the MIME type used for content-type negotiation versioning.--callTimeout=SECONDSsets the maximum total time for an HTTP call (0disables the limit). Default:20.--connectionTimeout=SECONDSsets the connection timeout. Default:10.--readTimeout=SECONDSsets the maximum response read inactivity. Default:10.--writeTimeout=SECONDSsets the maximum request write inactivity. Default:10.--maxResponseBytes=BYTESsets the maximum number of decompressed response-body bytes to capture per HTTP call (0disables the limit). Default:10485760.--maxRequestsPerMinute=NUMBERlimits request throughput. Default:10000.--userAgent=VALUEsets theUser-Agentheader. Default:cats/VERSION.--configFile=FILEloads command configuration from a file.
Authentication and request data
--basicAuth=USER:PASSWORDsupplies HTTP basic authentication.--basicauthis an alias.--authRefreshInterval=SECONDScontrols how often CATS refreshes credentials.--authRefreshScript=SCRIPTruns a script to obtain refreshed credentials. Headers whose value isauth_scriptare replaced with the script output.--ariand--arsare short aliases for the authentication refresh options.--sslKeystore=FILE,--sslKeystorePwd=PASSWORD, and--sslKeyPwd=PASSWORDconfigure mutual TLS (client certificate and private key).--insecuredisables TLS certificate and hostname verification. Use only for trusted test environments.--envFile=FILEloads fallback environment variables from a dotenv file instead of the auto-detected./.env.--noEnvFileor--no-env-filedisables automatic loading of./.env.--proxyHost=HOSTand--proxyPort=PORTconfigure the proxy server.--headers=FILEloads per-path headers from YAML.-H name=valueadds a header globally.--queryParams=FILEloads per-path query parameters from YAML.-Q name=valueadds a query parameter globally.--refData=FILEloads fixed values required for valid business requests.-R name=valueadds reference data globally.--correlations=FILEor--correlate=FILEloads cross-field correlation rules (when/thensetoromit) applied to request payloads across live HTTP commands.--urlParams=name:value,...replaces path parameters globally.-P name=valueis the equivalent global parameter form.--functionalFuzzerFile=FILEsupplies the functional test or sequential functional flow file used bycats run.--securityFuzzerFile=FILEsupplies the configuration used by theSecurityFuzzer.--createRefDataasks theFunctionalFuzzerto create a reference-data file from the paths and output variables in the functional file.--wfcAuth=FILEloads a Web Fuzzing Commons authentication YAML/JSON file. CATS resolves the selected entry and applies its headers, cookies, or query parameters.--wfcAuthName=NAMEselects an entry from--wfcAuth; if omitted, CATS starts with the first entry and switches to subsequent entries on HTTP401or403.
See Authentication for the built-in authentication options and WFC authentication for Web Fuzzing Commons configuration.
Fuzzer selection and scope
-f, --fuzzers=FUZZER,...runs only matching fuzzers. Full or partial names are accepted. Usecats list --fuzzersto see the current names.--skipFuzzers=FUZZER,...ignores matching fuzzers.--skipFuzzersForExtension=EXTENSION=VALUE:Fuzzer1,Fuzzer2skips fuzzers for endpoints having a matching OpenAPI extension.--skipFuzzerForExtensionis an alias.--mode=ALL|NEGATIVE|POSITIVEselects all scenarios, only negative scenarios, or only positive/happy-path scenarios. Default:ALL.--profile=security|quick|compliance|ci|coverage|crash|type-coercion|health-check|fullselects a built-in fuzzer profile. Default:full.--profileFile=FILEloads custom fuzzer profiles from YAML.--healthCheckruns the minimalhealth-checkprofile before full fuzzing. Default:false.--checkFieldsruns only Field Fuzzers.--checkHeadersruns only Header Fuzzers.--checkHttpruns only HTTP Fuzzers.--includeLintersor--includeContractincludes Contract/Linter Fuzzers.--checkContractis an alias for including Contract/Linter Fuzzers.--includeWhitespaces,--includeEmojis, and--includeControlCharsenable the corresponding opt-in fuzzers.-p, --paths=PATH,...limits execution to selected paths.--pathis an alias.--skipPaths=PATH,...excludes paths.--operationIds=ID,...limits execution to selected operation IDs.--operationIdis an alias.--skipOperationIds=ID,...excludes operation IDs.--tags=TAG,...limits execution to selected tags.--tagis an alias.--skipTags=TAG,...excludes tags.-X, --httpMethods=METHOD,...limits execution to selected HTTP methods (POST, PUT, GET, DELETE, PATCH, HEADby default;TRACEis also supported when explicitly included).--httpMethodis an alias.--skipHttpMethods=METHOD,...excludes HTTP methods.--skipDeprecatedOperationsexcludes deprecated API operations. Default:false.--skipFields=FIELD,...excludes fields from replacement fuzzers. Prefix a field with!to skip that field and all descendants.--skipHeaders=HEADER,...excludes headers from all fuzzers.--fieldTypes=TYPE,...and--fieldFormats=FORMAT,...include only matching OpenAPI field types or formats.--skipFieldTypes=TYPE,...and--skipFieldFormats=FORMAT,...exclude matching OpenAPI field types or formats.
Processing
--fieldsFuzzingStrategy=ONEBYONE|SIZE|POWERSETselects the field-removal strategy. Default:ONEBYONE.--maxFieldsToRemove=NUMBERlimits fields removed by theSIZEstrategy.--limitFuzzedFields=NUMBERlimits request fields selected for fuzzing.0means all fields.--largeStringsSize=NUMBERcontrols the size of generated large strings. Default:40000.--randomHeadersNumber=NUMBERcontrols the number of generated random headers. Default:10000.--selfReferenceDepth=NUMBERlimits generated depth for cyclic request objects. Default:2.--limitXxxOfCombinations=NUMBERlimits generatedoneOf/anyOfcombinations. Default:20.--resolveXxxOfCombinationForResponsesalso resolvesoneOf/anyOfcombinations in responses.--discriminatorCasing=STYLEchooses the casing for discriminator values when the contract has no explicit enum or mapping. Supported styles includePascalCase,camelCase,UPPER_SNAKE_CASE,lower_snake_case,kebab-case, andlowercase.--oneOfSelection=name=value,...or--anyOfSelection=name=value,...selects discriminator values when multiple request payloads are possible.--[no-]useDefaultscontrols whether schema defaults are used. Default:true.--[no-]useExamplesenables the contract's request, schema, property, and response examples together.--usePropertyExamples,--useRequestBodyExamples,--useResponseBodyExamples, and--useSchemaExamplescontrol individual example sources; the property and response options are negatable with--no-....--[no-]cachePayloadsreuses generated payload examples for the same schema. Default:true.--[no-]reuseSuccessfulResourcescontrols whether successful request baselines and correlated resource values from2XXresponses are reused in later requests. Default:truestarting with CATS 14.1.0. See Runtime resource reuse.--preseedCollectionGetsruns selected unparameterized collectionGEToperations without required parameters before normal path fuzzing to capture existing resource identifiers. Default:false.--maxPreseedCollectionGets=NUMBERlimits the number of collectionGETrequests sent by--preseedCollectionGets(0sends none). Default:20.--strictTypesexpects2XXfor type-coercion scenarios;--no-strictTypespermits the normal4XXexpectation. Default: enabled.--allowInvalidEnumValuesexpects2XXwhen invalid enum values are sent. Default:false.--edgeSpacesStrategy=VALIDATE_AND_TRIM|TRIM_AND_VALIDATEcontrols expectations for leading or trailing spaces.--sanitizationStrategy=SANITIZE_AND_VALIDATE|VALIDATE_AND_SANITIZEcontrols expectations for Unicode control characters and other symbols.--http2PriorKnowledgeforces HTTP/2 without falling back to HTTP/1.x.--rfc7396usesapplication/merge-patch+jsonfor PATCH requests.--checkAllowHeaderchecks that responses to HTTP-method fuzzers contain a correctAllowheader.--pathsRunOrder=FILEexecutes paths in the order listed in the file.--fuzzersConfig=FILEloads per-fuzzer response-code configuration from a properties file.--errorLeaksKeywords=FILEsupplies keywords used to detect possible error leaks.--seed=NUMBERmakes random value generation deterministic. Default:0.--dryRunprints the planned test count and fuzzer selection without invoking the service.--blackboxignores response mismatches except for5XXerrors.--includeAllInjectionPayloadsuses the complete SQL, XSS, command, and NoSQL injection payload sets instead of the curated top ten per type.
Response handling and reporting
--ignoreResponseCodes=CODE,...,--ignoreResponseSize=SIZE,...,--ignoreResponseWords=COUNT,..., and--ignoreResponseLines=COUNT,...treat matching responses as success.--ignoreResponseRegex=REGEXtreats matching response bodies as success.--ignoreResponseContentTypeCheck,--ignoreResponseBodyCheck,--ignoreErrorLeaksCheck, and--ignoreResponseCodeUndocumentedCheckdisable the corresponding checks.--filterResponseCodes=CODE,...,--filterResponseSize=SIZE,...,--filterResponseWords=COUNT,...,--filterResponseLines=COUNT,..., and--filterResponseRegex=REGEXomit matching results from the report.--skipReportingForIgnoredCodesomits results matching ignored response conditions.--skipReportingForSuccessand--skipReportingForWarningomit successful or warning results. Their short aliases are--sri,--srs, and--srw.- Short aliases are available for common response options:
-i/--icfor ignored codes,-k/--srifor skipped ignored results,-bfor blackbox,--fc,--fl,--fr,--fs, and--fwfor filters, and--ib,--ie,--il,--ir,--is,--it,--iu, and--iwfor ignore checks. Match options also have--mc,--mi,--ml,--mr,--ms, and--mwaliases. --maxResponseTimeInMs=MILLISECONDSreports successful responses exceeding the limit as errors.-o, --output=DIRselects the report directory. Default:cats-report.--reportFormat=HTML_JS|HTML_ONLY|HTML_JS_CLUSTERS|JUNIT|WFC_REPORT,...selects one or more comma-separated report formats to generate in the same run (for example--reportFormat HTML_JS,WFC_REPORT). Default:HTML_JS.--timestampReportsplaces each run in a timestamped subdirectory.--printExecutionStatisticsprints endpoint/method timing summaries.--printDetailedExecutionStatisticsprints per-request timing details.--printProgressprints URLs matching the configured filters.--tuiruns OpenAPI fuzzing in the interactive terminal interface.--tuiMaxResults=NUMBERcontrols how many recent test details the TUI retains. Default:10000.--verbosity=SUMMARY|DETAILEDcontrols console logging detail. Default:SUMMARY.--[no-]checkUpdatecontrols update checks. Default:true.--[no-]colorenables or disables coloured output. Default:true.-j, --jsonselects JSON output for commands that support it.-D, --debugenables all CATS log levels.-l, --log=PACKAGE:LEVEL,...sets custom package log levels.-O, --onlyLog=LEVEL,...includes only selected log levels.-g, --skipLog=LEVEL,...excludes selected log levels.--maskHeaders=HEADER,...masks additional headers in console output and report files (common sensitive headers and query parameters are masked automatically by default).--showSecretsdisables automatic masking of sensitive headers and query parameters.--nameReplaceor--simpleReplaceapplies dictionary values by replacing the selected target field names directly.
Quality gates and stop conditions
--failOn=error,warnmakes CATS exit with code1when any selected result type is reported. Default:error.--qualityGate="errors<5,warns<20"sets numeric thresholds. Supported metrics areerrors,warns, andwarnings(non-negative integer thresholds); quality-gate thresholds take precedence over--failOn.--baseline=FILE_OR_DIRcompares the current run apples-to-apples against a baselinecats-reportdirectory orcats-summary-report.jsonfile across shared(path, httpMethod, fuzzer)scopes, failing only when new error regressions are introduced.--failOnNewWarningswhen used with--baseline, also fails the build if new warnings are introduced compared to the baseline.--stopAfterErrors=NUMBERstops after the specified number of error results.--seis a short alias.--stopAfterTests=NUMBERstops after the specified number of test cases.--stopAfterMutationsand--smare aliases.--stopAfterTimeInSec=SECONDSstops after the specified elapsed time.--stis a short alias.--fillTimeBudget(or--withRandom) continues fuzzing withRandomFuzzerafter the deterministic fuzzers finish until the--stopAfterTimeInSectime budget expires.
Stop conditions apply to normal OpenAPI fuzzing as well as continuous and
template fuzzing. When an execution limit is reached, the report records the
stop condition and the run summary still reflects the tests already executed.
When --fillTimeBudget (--withRandom) is used with --stopAfterTimeInSec
(or RandomFuzzer is explicitly included in --fuzzers), CATS uses any
remaining time after the deterministic fuzzers finish to run continuous
RandomFuzzer rounds.
Custom dictionary matching
These options are active when a custom dictionary is supplied with --words:
--words=FILEloads a custom dictionary.--matchResponseCodes=CODE,...,--matchResponseSize=SIZE,...,--matchResponseWords=COUNT,..., and--matchResponseLines=COUNT,...mark matching responses as errors.--matchResponseRegex=REGEXmarks matching response bodies as errors.--matchInputmarks a test as an error when the response reflects the fuzzed input.
--cmt is the short alias for --customMutatorTypes. --version prints the
CATS version and exits.
For the short option aliases and command-specific options, run:
cats --help
cats analyze --help
cats init --help
cats smoke --help
cats compare --help
cats list --help
cats replay --help
cats run --help
cats template --help
cats random --help
Command-specific options
cats analyze(aliasblueprint) requires-c, --contract=FILEand supports--mermaidand-j, --json.cats initrequires-c, --contract=FILEand supports-o, --output=DIR,--force, and-j, --json.cats smoke(aliasprobe) supports the standard contract, server, authentication, files, filter, and reporting options plus--includeDeleteand-j, --json.cats compare(aliasdiff) requires-b, --baseline=FILE_OR_DIRand-t, --target=FILE_OR_DIR, and supports--failOnNewErrors(default:true),--failOnNewWarnings, and-j, --json.cats listsupports--fuzzers,--linters,--profiles,--formats,--mutators,--customMutatorTypes,--fieldsFuzzerStrategies, and--paths(with--executionOrderor--dependencyOrderto show producer-to-consumer execution order). Use--jsonfor machine-readable output.cats replay TESTsupports--errors,--warnings,--reportFolder=DIR,--output=DIR,--server=URL,--callTimeout=SECONDS,--maxResponseBytes=BYTES,--curl(prints equivalentcurlcommands without sending HTTP calls), and--verbose.cats run FILEsupports--correlations=FILE(--correlate=FILE),--headers=FILE,-H,--queryParams=FILE,--refData=FILE,--createRefData,--contentType=TYPE,--oneOfSelection,--anyOfSelection,--discriminatorCasing, and--seed.cats template URLsupports--data=JSON_OR_FILE,--targetFields=FIELD,...,--httpMethod=METHOD,--headers, and--random.cats lintsupports--skipLinters=NAME,...,--strict,--enumsNaming,--headersNaming,--jsonObjectsNaming,--jsonPropertiesNaming,--operationPrefixMapFile,--pathNaming,--pathVariablesNaming, and--queryParamsNaming.cats statssupports--detailedand--skip=SECTION,....cats validatesupports--detailed.cats generatesupports--path=PATH,--httpMethod=METHOD,--limit=NUMBER,--selfReferenceDepth=NUMBER,--pretty, and--[no-]useExamples.cats explainrequires--type=fuzzer|linter|profile|mutator|response_code|error_reasonand a positional value to explain.cats generate-completionprints the shell completion script. Enable it in the current shell withsource <(cats generate-completion).