diff --git a/src/scout_apm/core/config.py b/src/scout_apm/core/config.py
index 200968d..5d77b7b 100644
--- a/src/scout_apm/core/config.py
+++ b/src/scout_apm/core/config.py
@@ -233,6 +233,7 @@ class ScoutConfigDefaults(object):
             "name": "",
             "revision_sha": self._git_revision_sha(),
             "scm_subdirectory": "",
+            "uri_reporting": "filtered_params",
         }
 
     def _git_revision_sha(self):
diff --git a/src/scout_apm/core/web_requests.py b/src/scout_apm/core/web_requests.py
index 4e2b89e..52ff42d 100644
--- a/src/scout_apm/core/web_requests.py
+++ b/src/scout_apm/core/web_requests.py
@@ -1,5 +1,6 @@
 # coding=utf-8
 from scout_apm.compat import urlencode
+from scout_apm.core.context import AgentContext
 
 # Originally derived from:
 # 1. Rails:
@@ -35,6 +36,8 @@ FILTER_PARAMETERS = frozenset(
 
 
 def create_filtered_path(path, query_params):
+    if AgentContext.instance.config.value("uri_reporting") == "path":
+        return path
     filtered_params = sorted(
         (
             (k, "[FILTERED]" if k.lower() in FILTER_PARAMETERS else v)

Config to capture query string, not just path
When a request comes in, we capture `request.path`, which doesn't appear to capture any query string.

We should match the Ruby agent:
* Default to capturing the entire path and query string
* Config to not capture query string https://docs.scoutapm.com/#uri_reporting
diff --git a/tests/unit/core/test_web_requests.py b/tests/unit/core/test_web_requests.py
index af36d4e..ffe9f0c 100644
--- a/tests/unit/core/test_web_requests.py
+++ b/tests/unit/core/test_web_requests.py
@@ -3,9 +3,17 @@ from __future__ import absolute_import, division, print_function, unicode_litera
 
 import pytest
 
+from scout_apm.core.context import AgentContext
 from scout_apm.core.web_requests import create_filtered_path
 
 
+@pytest.fixture(autouse=True)
+def force_context():
+    # Since this function accesses the context, it needs to always be built
+    # TODO: remove when moving to a sensible singleton pattern
+    AgentContext.build()
+
+
 @pytest.mark.parametrize(
     "path, params, expected",
     [
@@ -25,3 +33,14 @@ from scout_apm.core.web_requests import create_filtered_path
 )
 def test_create_filtered_path(path, params, expected):
     assert create_filtered_path(path, params) == expected
+
+
+@pytest.mark.parametrize("path, params", [("/", []), ("/", [("foo", "ignored")])])
+def test_create_filtered_path_path(path, params):
+    # If config filtered_params is set to "path", expect we always get the path
+    # back
+    AgentContext.instance.config.set(uri_reporting="path")
+    try:
+        assert create_filtered_path(path, params) == path
+    finally:
+        AgentContext.instance.config.reset_all()

pip install -e .[dev]
parse_log_pytest
requirements.txt
black flake8 isort tox bottle celery Django elasticsearch flask flask-sqlalchemy jinja2 mock pymongo pyramid pytest pytest-travis-fold pytest-cov redis six sqlalchemy starlette urllib3 webtest
apt-get update apt-get install -y gcc
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
amqp==5.3.1
anyio==3.7.1
asgiref==3.7.2
async-timeout==4.0.3
beautifulsoup4==4.13.3
billiard==3.6.4.0
black==23.3.0
bottle==0.13.2
cached-property==1.5.2
celery==5.2.7
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
click==8.1.8
click-didyoumean==0.3.1
click-plugins==1.1.1
click-repl==0.3.0
coverage==7.2.7
distlib==0.3.9
Django==3.2.25
dnspython==2.3.0
elastic-transport==8.13.1
elasticsearch==8.14.0
exceptiongroup==1.2.2
filelock==3.12.2
flake8==5.0.4
Flask==2.2.5
Flask-SQLAlchemy==3.0.5
greenlet==3.1.1
hupper==1.12.1
idna==3.10
importlib-metadata==4.2.0
iniconfig==2.0.0
isort==5.11.5
itsdangerous==2.1.2
Jinja2==3.1.6
kombu==5.2.4
MarkupSafe==2.1.5
mccabe==0.7.0
mock==5.2.0
mypy-extensions==1.0.0
packaging==24.0
PasteDeploy==3.1.0
pathspec==0.11.2
plaster==1.1.2
plaster-pastedeploy==1.0.1
platformdirs==2.6.2
pluggy==1.2.0
prompt_toolkit==3.0.48
psutil==7.0.0
py==1.11.0
pycodestyle==2.9.1
pyflakes==2.5.0
pymongo==4.7.3
pyramid==2.0.2
pytest==7.4.4
pytest-cov==4.1.0
pytest-travis-fold==1.3.0
pytz==2025.2
redis==5.0.8
requests==2.31.0
-e git+https://github.com/scoutapp/scout_apm_python.git@5b5dec7714dad3a723cbc1b8ade970d08426944a#egg=scout_apm
six==1.17.0
sniffio==1.3.1
soupsieve==2.4.1
SQLAlchemy==2.0.40
sqlparse==0.4.4
starlette==0.29.0
tomli==2.0.1
tox==3.28.0
translationstring==1.4
typed-ast==1.5.5
typing_extensions==4.7.1
urllib3==2.0.7
venusian==3.1.1
vine==5.1.0
virtualenv==20.16.2
waitress==2.1.2
wcwidth==0.2.13
WebOb==1.8.9
WebTest==3.0.1
Werkzeug==2.2.3
zipp==3.15.0
zope.deprecation==5.0
zope.interface==6.4.post2

name: scout_apm_python
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
  - certifi=2022.12.7=py37h06a4308_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=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - amqp==5.3.1
      - anyio==3.7.1
      - asgiref==3.7.2
      - async-timeout==4.0.3
      - beautifulsoup4==4.13.3
      - billiard==3.6.4.0
      - black==23.3.0
      - bottle==0.13.2
      - cached-property==1.5.2
      - celery==5.2.7
      - charset-normalizer==3.4.1
      - click==8.1.8
      - click-didyoumean==0.3.1
      - click-plugins==1.1.1
      - click-repl==0.3.0
      - coverage==7.2.7
      - distlib==0.3.9
      - django==3.2.25
      - dnspython==2.3.0
      - elastic-transport==8.13.1
      - elasticsearch==8.14.0
      - exceptiongroup==1.2.2
      - filelock==3.12.2
      - flake8==5.0.4
      - flask==2.2.5
      - flask-sqlalchemy==3.0.5
      - greenlet==3.1.1
      - hupper==1.12.1
      - idna==3.10
      - importlib-metadata==4.2.0
      - iniconfig==2.0.0
      - isort==5.11.5
      - itsdangerous==2.1.2
      - jinja2==3.1.6
      - kombu==5.2.4
      - markupsafe==2.1.5
      - mccabe==0.7.0
      - mock==5.2.0
      - mypy-extensions==1.0.0
      - packaging==24.0
      - pastedeploy==3.1.0
      - pathspec==0.11.2
      - plaster==1.1.2
      - plaster-pastedeploy==1.0.1
      - platformdirs==2.6.2
      - pluggy==1.2.0
      - prompt-toolkit==3.0.48
      - psutil==7.0.0
      - py==1.11.0
      - pycodestyle==2.9.1
      - pyflakes==2.5.0
      - pymongo==4.7.3
      - pyramid==2.0.2
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - pytest-travis-fold==1.3.0
      - pytz==2025.2
      - redis==5.0.8
      - requests==2.31.0
      - six==1.17.0
      - sniffio==1.3.1
      - soupsieve==2.4.1
      - sqlalchemy==2.0.40
      - sqlparse==0.4.4
      - starlette==0.29.0
      - tomli==2.0.1
      - tox==3.28.0
      - translationstring==1.4
      - typed-ast==1.5.5
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - venusian==3.1.1
      - vine==5.1.0
      - virtualenv==20.16.2
      - waitress==2.1.2
      - wcwidth==0.2.13
      - webob==1.8.9
      - webtest==3.0.1
      - werkzeug==2.2.3
      - zipp==3.15.0
      - zope-deprecation==5.0
      - zope-interface==6.4.post2
prefix: /opt/conda/envs/scout_apm_python

tests/unit/core/test_web_requests.py::test_create_filtered_path_path[/-params1]
tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params0-/] tests/unit/core/test_web_requests.py::test_create_filtered_path[/foo/-params1-/foo/] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params2-/?bar=1] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params3-/?bar=1&baz=2] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params4-/?bar=1&bar=2] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params5-/?password=%5BFILTERED%5D] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params6-/?PASSWORD=%5BFILTERED%5D] tests/unit/core/test_web_requests.py::test_create_filtered_path[/-params7-/?password=%5BFILTERED%5D&password=%5BFILTERED%5D] tests/unit/core/test_web_requests.py::test_create_filtered_path_path[/-params0]
src/scout_apm/core/config.py src/scout_apm/core/web_requests.py
src/scout_apm/core/config.py src/scout_apm/core/web_requests.py