diff --git a/vcr/config.py b/vcr/config.py
index 15ae459..cfc890d 100644
--- a/vcr/config.py
+++ b/vcr/config.py
@@ -145,6 +145,7 @@ class VCR(object):
 
         merged_config = {
             'serializer': self._get_serializer(serializer_name),
+            'persister': self.persister,
             'match_on': self._get_matchers(
                 tuple(matcher_names) + tuple(additional_matchers)
             ),

It seems that "register_persister()" does not work
It seems that the "self.persister" attribute is never propagated to new Cassettes created, since get_merged_config() doesn't look it up.

The code and the related test works because only FileSystemPersister is used in both.
diff --git a/tests/integration/test_register_persister.py b/tests/integration/test_register_persister.py
index 64e20b6..758a1cf 100644
--- a/tests/integration/test_register_persister.py
+++ b/tests/integration/test_register_persister.py
@@ -10,10 +10,25 @@ import vcr
 from vcr.persisters.filesystem import FilesystemPersister
 
 
+class CustomFilesystemPersister(object):
+    '''Behaves just like default FilesystemPersister but adds .test extension
+       to the cassette file'''
+    @staticmethod
+    def load_cassette(cassette_path, serializer):
+        cassette_path += '.test'
+        return FilesystemPersister.load_cassette(cassette_path, serializer)
+
+    @staticmethod
+    def save_cassette(cassette_path, cassette_dict, serializer):
+        cassette_path += '.test'
+        FilesystemPersister.save_cassette(cassette_path, cassette_dict,
+                                          serializer)
+
+
 def test_save_cassette_with_custom_persister(tmpdir, httpbin):
     '''Ensure you can save a cassette using custom persister'''
     my_vcr = vcr.VCR()
-    my_vcr.register_persister(FilesystemPersister)
+    my_vcr.register_persister(CustomFilesystemPersister)
 
     # Check to make sure directory doesnt exist
     assert not os.path.exists(str(tmpdir.join('nonexistent')))
@@ -23,7 +38,7 @@ def test_save_cassette_with_custom_persister(tmpdir, httpbin):
         urlopen(httpbin.url).read()
 
     # Callback should have made the file and the directory
-    assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml')))
+    assert os.path.exists(str(tmpdir.join('nonexistent', 'cassette.yml.test')))
 
 
 def test_load_cassette_with_custom_persister(tmpdir, httpbin):
@@ -31,9 +46,9 @@ def test_load_cassette_with_custom_persister(tmpdir, httpbin):
     Ensure you can load a cassette using custom persister
     '''
     my_vcr = vcr.VCR()
-    my_vcr.register_persister(FilesystemPersister)
+    my_vcr.register_persister(CustomFilesystemPersister)
 
-    test_fixture = str(tmpdir.join('synopsis.json'))
+    test_fixture = str(tmpdir.join('synopsis.json.test'))
 
     with my_vcr.use_cassette(test_fixture, serializer='json'):
         response = urlopen(httpbin.url).read()

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-httpbin
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==25.3.0
blinker==1.9.0
brotlicffi==1.1.0.0
cffi==1.17.1
click==8.1.8
decorator==5.2.1
exceptiongroup==1.2.2
flasgger==0.9.7.1
Flask==3.1.0
greenlet==2.0.2
httpbin==0.10.2
importlib_metadata==8.6.1
iniconfig==2.1.0
itsdangerous==2.2.0
Jinja2==3.1.6
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
MarkupSafe==3.0.2
mistune==3.1.3
packaging==24.2
pluggy==1.5.0
pycparser==2.22
pytest==8.3.5
pytest-httpbin==2.1.0
PyYAML==6.0.2
referencing==0.36.2
rpds-py==0.24.0
six==1.17.0
tomli==2.2.1
typing_extensions==4.13.0
-e git+https://github.com/kevin1024/vcrpy.git@0a3aaddca22594e2fa9768da5ba519bc68b3cd6c#egg=vcrpy
Werkzeug==3.1.3
wrapt==1.17.2
zipp==3.21.0

name: vcrpy
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==25.3.0
      - blinker==1.9.0
      - brotlicffi==1.1.0.0
      - cffi==1.17.1
      - click==8.1.8
      - decorator==5.2.1
      - exceptiongroup==1.2.2
      - flasgger==0.9.7.1
      - flask==3.1.0
      - greenlet==2.0.2
      - httpbin==0.10.2
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - itsdangerous==2.2.0
      - jinja2==3.1.6
      - jsonschema==4.23.0
      - jsonschema-specifications==2024.10.1
      - markupsafe==3.0.2
      - mistune==3.1.3
      - packaging==24.2
      - pluggy==1.5.0
      - pycparser==2.22
      - pytest==8.3.5
      - pytest-httpbin==2.1.0
      - pyyaml==6.0.2
      - referencing==0.36.2
      - rpds-py==0.24.0
      - six==1.17.0
      - tomli==2.2.1
      - typing-extensions==4.13.0
      - werkzeug==3.1.3
      - wrapt==1.17.2
      - zipp==3.21.0
prefix: /opt/conda/envs/vcrpy

tests/integration/test_register_persister.py::test_save_cassette_with_custom_persister
tests/integration/test_register_persister.py::test_load_cassette_with_custom_persister
vcr/config.py
vcr/config.py