vcr configuration

vcr configuration


Get configuration

Use vcr_configuration() to get the current configuration.


You can also get the default configuration variables via vcr_config_defaults()


These defaults are set when you load vcr - you can override any of them as described below.

Set configuration variables

Use vcr_configure() to set configuration variables.

For example, set a single variable:

  dir = "foobar/vcr_cassettes"

Or many at once:

  dir = "foobar/vcr_cassettes",
  record = "all"

Re-set to defaults


Details on some of the config options


Directory where cassettes are stored

vcr_configure(dir = "new/path")


The record mode

One of: ‘all’, ‘none’, ‘new_episodes’, ‘once’. See ?recording for info on the options

vcr_configure(record = "new_episodes")


Customize how vcr matches requests

vcr_configure(match_requests_on = c('query', 'headers'))


Allow HTTP connections when no cassette

Default is TRUE, and thus does not error when http interactions are unused. You can set to FALSE in which case vcr errors when a cassette is ejected and not all http interactions have been used.

vcr_configure(allow_unused_http_interactions = FALSE)


Which serializer to use. Right now only option is “yaml”

vcr_configure(serialize_with = "yaml")


Which persister to use. Right now only option is “FileSystem”

vcr_configure(persist_with = "FileSystem")


Specify particular hosts to ignore. By ignore, we mean that real HTTP requests to the ignored host will be allowed to occur, while all others will not.

vcr_configure(ignore_hosts = "")


Ignore all localhost requests

vcr_configure(ignore_localhost = TRUE)


Ignore any request for which function x is true

vcr_configure(ignore_request = function(x) x == 5)


Which uri parser to use

By default we use crul::url_parse, but you can use a different one. Remember to pass in the function quoted, and namespaced.

vcr_configure(uri_parser = "urltools::url_parse")


Some HTTP servers are not well-behaved and respond with invalid data. Set preserve_exact_body_bytes to TRUE to base64 encode the result body in order to preserve the bytes exactly as-is. vcr does not do this by default, since base64-encoding the string removes the human readability of the cassette.

vcr_configure(preserve_exact_body_bytes = TRUE)


A named list of values to replace. Sometimes your package or script is working with sensitive tokens/keys, which you do not want to accidentally share with the world.

Before recording (writing to a cassette) we do the replacement and then when reading from the cassette we do the reverse replacement to get back to the real data.

  filter_sensitive_data = list("<some_api_key>" = Sys.getenv('MY_API_KEY'))

Before recording to disk, the env var MY_API_KEY is retrieved from your machine, and we find instances of it, and replace with <some_api_key>. When replaying to create the HTTP response object we put the real value of the env var back in place.

More documentation

Check out the http testing book for a lot more documentation on vcr, webmockr, and crul