From 24981aac158b2e7d76555079098e0997bb9b861f Mon Sep 17 00:00:00 2001 From: Jack Rothrock Date: Thu, 17 Sep 2026 16:38:50 +0000 Subject: [PATCH 1/4] Release 3.5.4 Cut the pending changelog entries as version 3.5.4 and bump the version in setup.py from 3.5.3 to 3.5.4. --- CHANGELOG.md | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c081cd00..00133b3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Pending +## [3.5.4] 2026-09-15 - Fix FastMCP tool annotation tags (`read_only`/`idempotent`/`external`/`destructive`) under FastMCP 4.x (MCP SDK v2), which renamed the `ToolAnnotations` hint fields from camelCase to snake_case; reads now try snake_case then camelCase, keeping FastMCP 2.x/3.x support - Bump flake8 pre-commit hook to 7.3.0 for Python 3.12+ compatibility (pyflakes no longer crashes on `ast.Str`) - Fix `rq` instrumentation: use `Job.id` property instead of removed `get_id()` (#851) diff --git a/setup.py b/setup.py index 126966dd..f2e259be 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ setup( name="scout_apm", - version="3.5.3", + version="3.5.4", description="Scout Application Performance Monitoring Agent", long_description=long_description, long_description_content_type="text/markdown", From aa4e6cad584becbfb1204c9117b46823ef1b10d7 Mon Sep 17 00:00:00 2001 From: Jack Rothrock Date: Mon, 14 Sep 2026 15:30:36 -0600 Subject: [PATCH 2/4] Add core_agent_ca_cert config option Passes a configured CA certificate path through to the Core Agent binary as a --ca-cert flag when launching it as a subprocess, mirroring the existing --log-file/--config-file/--socket handling. --- CHANGELOG.md | 3 +++ src/scout_apm/core/agent/manager.py | 9 +++++++++ src/scout_apm/core/config.py | 1 + tests/unit/core/agent/test_manager.py | 15 +++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00133b3f..a981fb9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## Pending +- Add `core_agent_ca_cert` config option to pass `--ca-cert` to the Core Agent + ## [3.5.4] 2026-09-15 - Fix FastMCP tool annotation tags (`read_only`/`idempotent`/`external`/`destructive`) under FastMCP 4.x (MCP SDK v2), which renamed the `ToolAnnotations` hint fields from camelCase to snake_case; reads now try snake_case then camelCase, keeping FastMCP 2.x/3.x support - Bump flake8 pre-commit hook to 7.3.0 for Python 3.12+ compatibility (pyflakes no longer crashes on `ast.Str`) diff --git a/src/scout_apm/core/agent/manager.py b/src/scout_apm/core/agent/manager.py index df0650c7..613da31d 100644 --- a/src/scout_apm/core/agent/manager.py +++ b/src/scout_apm/core/agent/manager.py @@ -69,6 +69,7 @@ def run(self): + self.log_file() + self.config_file() + self.socket_path() + + self.ca_cert() ), close_fds=True, stdout=devnull, @@ -129,6 +130,14 @@ def config_file(self): else: return [] + def ca_cert(self): + path = scout_config.value("core_agent_ca_cert") + + if path is not None: + return ["--ca-cert", path] + else: + return [] + def verify(self): manifest = parse_manifest(self.core_agent_dir + "/manifest.json") if manifest is None: diff --git a/src/scout_apm/core/config.py b/src/scout_apm/core/config.py index 7e22b470..9300e113 100644 --- a/src/scout_apm/core/config.py +++ b/src/scout_apm/core/config.py @@ -63,6 +63,7 @@ def log(self) -> None: "app_server", "application_root", "collect_remote_ip", + "core_agent_ca_cert", "core_agent_config_file", "core_agent_dir", "core_agent_download", diff --git a/tests/unit/core/agent/test_manager.py b/tests/unit/core/agent/test_manager.py index f13cdc99..924e5aef 100644 --- a/tests/unit/core/agent/test_manager.py +++ b/tests/unit/core/agent/test_manager.py @@ -93,6 +93,21 @@ def test_config_file_old_name_takes_precedence(self): assert result == ["--config-file", "foo"] + def test_ca_cert(self): + scout_config.set(core_agent_ca_cert="foo") + + try: + result = CoreAgentManager().ca_cert() + finally: + scout_config.reset_all() + + assert result == ["--ca-cert", "foo"] + + def test_ca_cert_not_set(self): + result = CoreAgentManager().ca_cert() + + assert result == [] + class TestParseManifest(object): def test_fail_does_not_exist(self, caplog, tmp_path): From f206f0f1f6bf1275de629c6e4e905cddea56dcb1 Mon Sep 17 00:00:00 2001 From: Jack Rothrock Date: Thu, 17 Sep 2026 14:29:01 -0600 Subject: [PATCH 3/4] Bumped core-agent to 1.6.0 --- CHANGELOG.md | 1 + src/scout_apm/core/config.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a981fb9d..49659139 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ## Pending +- Bumped core-agent to 1.6.0 - Add `core_agent_ca_cert` config option to pass `--ca-cert` to the Core Agent ## [3.5.4] 2026-09-15 diff --git a/src/scout_apm/core/config.py b/src/scout_apm/core/config.py index 9300e113..2b3152eb 100644 --- a/src/scout_apm/core/config.py +++ b/src/scout_apm/core/config.py @@ -230,7 +230,7 @@ def __init__(self): "core_agent_log_level": "info", "core_agent_permissions": 700, "core_agent_socket_path": "tcp://127.0.0.1:6590", - "core_agent_version": "v1.5.1", # can be an exact tag name, or 'latest' + "core_agent_version": "v1.6.0", # can be an exact tag name, or 'latest' "disabled_instruments": [], "download_url": ( "https://s3-us-west-1.amazonaws.com/scout-public-downloads/" From de6a6a519047dd4f35729f1406136b1f203ad34e Mon Sep 17 00:00:00 2001 From: Jack Rothrock Date: Thu, 17 Sep 2026 12:55:59 -0600 Subject: [PATCH 4/4] Release 3.5.5 Cut the ca_cert changelog entry as version 3.5.5 and bump the version in setup.py from 3.5.4 to 3.5.5. --- CHANGELOG.md | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49659139..fd5d1cb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Pending +## [3.5.5] 2026-09-15 - Bumped core-agent to 1.6.0 - Add `core_agent_ca_cert` config option to pass `--ca-cert` to the Core Agent diff --git a/setup.py b/setup.py index f2e259be..5895f8f5 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ setup( name="scout_apm", - version="3.5.4", + version="3.5.5", description="Scout Application Performance Monitoring Agent", long_description=long_description, long_description_content_type="text/markdown",