Make removing a webhook's custom path actually remove it - #670
Open
elias-ba wants to merge 1 commit into
Open
Conversation
elias-ba
marked this pull request as draft
September 4, 2026 23:29
Lightning reads an absent custom_path as "leave it alone" and restores the stored one, so an assistant that removes the key when asked to remove the path reports success while the old URL keeps working. Told that custom_path: null is what clears it, the model writes the null and the path goes. The prompt carries the field and the rules the server enforces, and says not to invent a path: uniqueness is per project and Apollo never sees the project. The judges guarded every job and edge but not the trigger, so a dropped sub-key graded as fine. The trigger id is pinned. Lightning restores an omitted custom_path by matching that id, and the id survives here only because it is preserved under a flat key rather than one keyed on the trigger name, which reads like something to tidy up. custom_path is deliberately not preserved alongside the ids. A user could then never remove a path through chat, since an omission and a deliberate drop are indistinguishable from here.
elias-ba
force-pushed
the
feat/webhook-custom-path
branch
from
September 4, 2026 23:40
8d572da to
be11611
Compare
elias-ba
marked this pull request as ready for review
September 5, 2026 02:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Short Description
Teaches workflow chat about
custom_pathon webhook triggers, so the assistant can set one when asked and remove one when asked.Fixes #669
Implementation Details
Lightning reads an absent
custom_pathas "leave it alone" and restores the stored one. So an assistant that removes the key when asked to remove the path reports success while the old URL keeps working. Told thatcustom_path: nullis what clears it, the model writes the null and the path goes.The prompt now carries the field and the rules the server enforces, and says not to invent a path, since uniqueness is per project and Apollo never sees the project.
The judges guarded "every job and edge" but not triggers, so a dropped sub-key graded as fine. Both now cover the trigger.
The trigger id is pinned too. Lightning restores an omitted
custom_pathby matching that id, so an id that changes on its way through here takes the custom URL with it. It survives because it is preserved under a flat key rather than one keyed on the trigger name, which reads like something to tidy up.custom_pathis deliberately not preserved inextract_and_preserve_componentsalongside the ids. A user could then never remove a path through chat, since an omission and a deliberate drop are indistinguishable there.poetry run pytest services/*/tests/unitpasses. Of the live tests,test_removes_a_custom_path_with_an_explicit_nullis the one that fails without this change; the others guard against a later regression.AI Usage
Please disclose whether you've used AI in this work (it's cool, we just want to know!):
You can read more details in our Responsible AI Policy