Repository navigation
gh api response should escape control characters in response ( especially diff_hunk) with respect to PR comments #10474
Description
Describe the feature or problem you’d like to solve
gh api response should escape control characters in response ( especially diff_hunk) with respect to PR comments
Proposed solution
Before sending the response, sanitize the output and escape / replace the new lines and other control characters so that json structure is preserved.
How will it benefit CLI and its users?
Save time and headache in manually cleaning up the JSON from output.
Additional context
Currently the GH API returns the PR comment in raw form which as lot of control characters and new lines under diff_hunk. If we are working with commands such as jq in shell , it will break with error jq: parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 15, column 47
gh api repos/"$ORG_NAME"/"$REPO"/pulls/"$PR_NUMBER"/comments >
[{"url":"https://github.myorg.com/api/v3/repos/myorg/GH_TEST_PR_REPO/pulls/comments/3283369","pull_request_review_id":6185275,"id":3283369,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyODMzNjk=","diff_hunk":"@@ -0,0 +1,17 @@
+package com.test;
+
+//TIP To <b>Run</b> code, press <shortcut actionId=\"Run\"/> or
+// click the <icon src=\"AllIcons.Actions.Execute\"/> icon in the gutter.
+public class Main {
+ public static void main(String[] args) {
+ //TIP Press <shortcut actionId=\"ShowIntentionActions\"/> with your caret at the highlighted text
+ // to see how IntelliJ IDEA suggests fixing it.
+ System.out.printf(\"Hello and welcome!\");
+
+ for (int i = 1; i <= 5; i++) {
+ //TIP Press <shortcut actionId=\"Debug\"/> to start debugging your code. We have set one <icon src=\"AllIcons.Debugger.Db_set_breakpoint\"/> breakpoint
+ // for you, but you can always add more by pressing <shortcut actionId=\"ToggleLineBreakpoint\"/>.
+ System.out.println(\"i = \" + i);","path":"test_PR/src/main/java/com/test/Main.java","commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","original_commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","user":{"login":"jsing120","id":2258,"node_id":"MDQ6VXNlcjIyNTg=","avatar_url":"https://github.myorg.com/avatars/u/2258?","gravatar_id":"","url":"https://github.myorg.com/api/v3/users/jsing120","html_url":"https://github.myorg.com/jsing120","followers_url":"https://github.myorg.com/api/v3/users/jsing120/followers","following_url":"https://github.myorg.com/api/v3/users/jsing120/following{/other_user}","gists_url":"https://github.myorg.com/api/v3/users/jsing120/gists{/gist_id}","starred_url":"https://github.myorg.com/api/v3/users/jsing120/starred{/owner}{/repo}","subscriptions_url":"https://github.myorg.com/api/v3/users/jsing120/subscriptions","organizations_url":"https://github.myorg.com/api/v3/users/jsing120/orgs","repos_url":"https://github.myorg.com/api/v3/users/jsing120/repos","events_url":"https://github.myorg.com/api/v3/users/jsing120/events{/privacy}","received_events_url":"https://github.myorg.com/api/v3/users/jsing120/received_events","type":"User","site_admin":false},"body":"souts not recommended","created_at":"2025-02-20T06:19:55Z","updated_at":"2025-02-20T06:19:55Z","html_url":"https://github.myorg.com/myorg/GH_TEST_PR_REPO/pull/2#discussion_r3283369","pull_request_url":"https://github.myorg.com/api/v3/repos/myorg/GH_TEST_PR_REPO/pulls/2","author_association":"MEMBER","_links":{"self":{"href":"https://github.myorg.com/api/v3/repos/myorg/GH_TEST_PR_REPO/pulls/comments/3283369"},"html":{"href":"https://github.myorg.com/myorg/GH_TEST_PR_REPO/pull/2#discussion_r3283369"},"pull_request":{"href":"https://github.myorg.com/api/v3/repos/myorg/GH_TEST_PR_REPO/pulls/2"}},"reactions":{"url":"https://github.myorg.com/api/v3/repos/myorg/GH_TEST_PR_REPO/pulls/comments/3283369/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":14,"original_line":14,"side":"RIGHT","original_position":14,"position":14,"subject_type":"line"}]
Add any other context like screenshots or mockups are helpful, if applicable.
Activity
andyfeller commentedon Feb 20, 2025
Thank you for opening up this issue, @jsing120! 🙇 I'd like to ask you a few questions to understand this concern better and how this is / isn't covered by the
asciisanitizerpackage introduced originally in #7694Note
As of
v2.67.0,gh pr view --json commentsdoes not containdiff_hunkwhich I assume whygh apiis being used.Questions
What version of
ghare you using?For testing purposes, I'm using
2.67.0:Is there a public GitHub repo we can replicate this concern?
For example, update default upstream when forking repo during PR creation #10458 returns the following for
diff_hunkwhen callinggh api /repos/cli/cli/pulls/10458/comments:Full JSON output
[{"url":"https://api.github.com/repos/cli/cli/pulls/comments/1960558598","pull_request_review_id":2624978688,"id":1960558598,"node_id":"PRRC_kwDODKw3uc5028AG","diff_hunk":"@@ -1002,6 +1003,15 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {\n \n \t\tfmt.Fprintf(opts.IO.ErrOut, \"Added %s as remote %q\\n\", ghrepo.FullName(headRepo), remoteName)\n \n+\t\tif didForkRepo {\n+\t\t\tgitClient.SetRemoteResolution(context.Background(), \"upstream\", \"base\")\n+\t\t\tif opts.IO.IsStdinTTY() && opts.IO.IsStdoutTTY() {\n+\t\t\t\tcs := opts.IO.ColorScheme()\n+\t\t\t\tstderr := opts.IO.ErrOut\n+\t\t\t\tfmt.Fprintf(stderr, \"%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\\n\", cs.WarningIcon(), cs.Bold(ghrepo.FullName(headRepo)))\n+\t\t\t}\n+\t\t}","path":"pkg/cmd/pr/create/create.go","commit_id":"af99c9d49572f934af98cd3215e51107a1600174","original_commit_id":"6368d531371d3efe085392ff2951b77f99bbd10a","user":{"login":"andyfeller","id":2089743,"node_id":"MDQ6VXNlcjIwODk3NDM=","avatar_url":"https://avatars.githubusercontent.com/u/2089743?v=4","gravatar_id":"","url":"https://api.github.com/users/andyfeller","html_url":"https://github.com/andyfeller","followers_url":"https://api.github.com/users/andyfeller/followers","following_url":"https://api.github.com/users/andyfeller/following{/other_user}","gists_url":"https://api.github.com/users/andyfeller/gists{/gist_id}","starred_url":"https://api.github.com/users/andyfeller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andyfeller/subscriptions","organizations_url":"https://api.github.com/users/andyfeller/orgs","repos_url":"https://api.github.com/users/andyfeller/repos","events_url":"https://api.github.com/users/andyfeller/events{/privacy}","received_events_url":"https://api.github.com/users/andyfeller/received_events","type":"User","user_view_type":"public","site_admin":true},"body":"## Suggestions\r\n\r\nOut of all of following idle thoughts, I think only a handful are reasonable to knock out here now versus waiting for new issues being raised:\r\n\r\n1. Remove `stdin` requirement for messaging\r\n2. Use local variable versus hardcoding remote name\r\n3. Return the error raised by setting default remote\r\n\r\n## Notes\r\n\r\nSome of my idle thoughts reviewing this logic:\r\n\r\n1. Why does `stdin` being TTY affect whether we output this message?\r\n2. How does such conditional logic apply to the `Added ... as remote` message?\r\n3. When do we use a variable for the remote name versus hardcoding this everywhere?\r\n4. How does this differ from other places in code where we handle this?\r\n5. Does this logic need to ensure no other remote is marked as default before setting `upstream`?\r\n\r\n### TTY affecting messaging\r\n\r\nIt seems like `gh repo fork` care about `stdin`, `stdout`, `stderr`... \r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/fork/fork.go#L187\r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/fork/fork.go#L380-L383\r\n\r\nwhereas `gh repo clone` just cares about `stdout` being TTY:\r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/clone/clone.go#L217-L221\r\n\r\nDefinitely want to revisit where different types or classes of messages are displayed so we had a little more consistency. In the meantime, I assume `gh pr create` would follow the same behavior as `gh repo clone` without factoring in `stdin` if we even bother to check.\r\n\r\n\r\n### Setting and unsetting\r\n\r\nMy main concern with the changes as they stand is comparing this versus `gh repo set-default` which checks `func (r Remotes) ResolvedRemote() (*Remote, error)` to determine if it should unset a remote before setting a new one 🤔 \r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/setdefault/setdefault.go#L228-L242\r\n\r\nIt feels there is an edge case that can emerge around `upstream` remote separately of the server-side repository forking the command does. However, let's see about users reporting errors before dealing with that concern.\r\n\r\n### Other places where we set default repository\r\n\r\nJust because I know this messaging is in a few different places, I always look at how consistent our behavior is.\r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/clone/clone.go#L209-L221\r\n\r\nhttps://github.com/cli/cli/blob/ae2f4b7c5b49dd1b5855a8c2d283e0b02fb636eb/pkg/cmd/repo/fork/fork.go#L372-L383\r\n","created_at":"2025-02-18T20:37:34Z","updated_at":"2025-02-18T21:13:04Z","html_url":"https://github.com/cli/cli/pull/10458#discussion_r1960558598","pull_request_url":"https://api.github.com/repos/cli/cli/pulls/10458","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/cli/cli/pulls/comments/1960558598"},"html":{"href":"https://github.com/cli/cli/pull/10458#discussion_r1960558598"},"pull_request":{"href":"https://api.github.com/repos/cli/cli/pulls/10458"}},"reactions":{"url":"https://api.github.com/repos/cli/cli/pulls/comments/1960558598/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":1006,"start_side":"RIGHT","line":null,"original_line":1013,"side":"RIGHT","original_position":19,"position":null,"subject_type":"line"}]Could you share the output from running this specific command with
GH_DEBUG=apienv var set?I realize you might need to redact information from the output to share, but it would help to understand what is going on.
jsing120 commentedon Feb 20, 2025
Thankyou for considering this request, PFB the information requested.
1) Version
2)REPO and PR :
https://github.com/jsing120/GH_TEST_PR_REPOhttps://github.com/jsing120/GH_TEST_PR_REPO/pull/13) PFB the output of debug
@andyfeller - let me know if the above details are sufficient?
jsing120 commentedon Feb 20, 2025
Weirdly the issue cannot be replicated on public github.com and only seems like happening with the enterprise github. So not sure it has to do something with our enterprise GITHUB version?
To run the script this can be found here - https://github.com/jsing120/GH_TEST_PR_REPO/blob/feature/testCLI_API/PR_TEST/scripts/GH_PR_EXTRACTOR_CLI.sh
DEBUG: Raw API response for PR 1 in GH_TEST_PR_REPO
andyfeller commentedon Feb 21, 2025
@jsing120: Interesting! This just raises a few other questions:
Could you explain what you mean by "our enterprise GITHUB version"?
I assume you mean private Enterprise Server deployment rather than Enterprise Cloud or Enterprise Cloud with Data Residency.
Is there any info you can share about the enterprise?
If this is Enterprise Server, what version?
Can you share
GH_DEBUG=apilogs where this is failing on your enterprise?If you're concerned about sharing this or not wanting to redact information, then an option would be working with your enterprise admin to raise this up to GitHub Support.
Is this still a problem if you upgrade GitHub CLI?
I don't think anything has changed since
v2.61.0that would change this behavior, but never hurts. 🤷jsing120 commentedon Feb 21, 2025
Could you explain what you mean by "our enterprise GITHUB version"?
I meant GitHub Enterprise Server 3.13.4
Is there any info you can share about the enterprise?
If this is Enterprise Server, what version?
Yes GitHub Enterprise Server 3.13.4
Can you share GH_DEBUG=api logs where this is failing on your enterprise?
If you're concerned about sharing this or not wanting to redact information, then an option would be working with your enterprise admin to raise this up to GitHub Support.
Is this still a problem if you upgrade GitHub CLI?
I don't think anything has changed since v2.61.0 that would change this behavior, but never hurts. 🤷
@andyfeller - I dont know what changed but its now formatting and escaping all the characters properly even on the GH enterprise server lol.
The response is now coming as
[{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3283369","pull_request_review_id":6185275,"id":3283369,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyODMzNjk=","diff_hunk":"@@ -0,0 +1,17 @@\n+package com.test;\n+\n+//TIP To <b>Run</b> code, press <shortcut actionId=\"Run\"/> or\n+// click the <icon src=\"AllIcons.Actions.Execute\"/> icon in the gutter.\n+public class Main {\n+ public static void main(String[] args) {\n+ //TIP Press <shortcut actionId=\"ShowIntentionActions\"/> with your caret at the highlighted text\n+ // to see how IntelliJ IDEA suggests fixing it.\n+ System.out.printf(\"Hello and welcome!\");\n+\n+ for (int i = 1; i <= 5; i++) {\n+ //TIP Press <shortcut actionId=\"Debug\"/> to start debugging your code. We have set one <icon src=\"AllIcons.Debugger.Db_set_breakpoint\"/> breakpoint\n+ // for you, but you can always add more by pressing <shortcut actionId=\"ToggleLineBreakpoint\"/>.\n+ System.out.println(\"i = \" + i);","path":"test_PR/src/main/java/com/test/Main.java","commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","original_commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","user":{"login":"jsing120","id":2258,"node_id":"MDQ6VXNlcjIyNTg=","avatar_url":"https://github.myorg.com/avatars/u/2258?","gravatar_id":"","url":"https://github.myorg.com/api/v3/users/jsing120","html_url":"https://github.myorg.com/jsing120","followers_url":"https://github.myorg.com/api/v3/users/jsing120/followers","following_url":"https://github.myorg.com/api/v3/users/jsing120/following{/other_user}","gists_url":"https://github.myorg.com/api/v3/users/jsing120/gists{/gist_id}","starred_url":"https://github.myorg.com/api/v3/users/jsing120/starred{/owner}{/repo}","subscriptions_url":"https://github.myorg.com/api/v3/users/jsing120/subscriptions","organizations_url":"https://github.myorg.com/api/v3/users/jsing120/orgs","repos_url":"https://github.myorg.com/api/v3/users/jsing120/repos","events_url":"https://github.myorg.com/api/v3/users/jsing120/events{/privacy}","received_events_url":"https://github.myorg.com/api/v3/users/jsing120/received_events","type":"User","site_admin":false},"body":"souts not recommended","created_at":"2025-02-20T06:19:55Z","updated_at":"2025-02-20T06:19:55Z","html_url":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3283369","pull_request_url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2","author_association":"MEMBER","_links":{"self":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3283369"},"html":{"href":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3283369"},"pull_request":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2"}},"reactions":{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3283369/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":14,"original_line":14,"side":"RIGHT","original_position":14,"position":14,"subject_type":"line"},{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3284863","pull_request_review_id":6188621,"id":3284863,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyODQ4NjM=","diff_hunk":"@@ -0,0 +1,17 @@\n+package com.test;\n+\n+//TIP To <b>Run</b> code, press <shortcut actionId=\"Run\"/> or\n+// click the <icon src=\"AllIcons.Actions.Execute\"/> icon in the gutter.\n+public class Main {\n+ public static void main(String[] args) {\n+ //TIP Press <shortcut actionId=\"ShowIntentionActions\"/> with your caret at the highlighted text\n+ // to see how IntelliJ IDEA suggests fixing it.\n+ System.out.printf(\"Hello and welcome!\");\n+\n+ for (int i = 1; i <= 5; i++) {","path":"test_PR/src/main/java/com/test/Main.java","commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","original_commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","user":{"login":"jsing120","id":2258,"node_id":"MDQ6VXNlcjIyNTg=","avatar_url":"https://github.myorg.com/avatars/u/2258?","gravatar_id":"","url":"https://github.myorg.com/api/v3/users/jsing120","html_url":"https://github.myorg.com/jsing120","followers_url":"https://github.myorg.com/api/v3/users/jsing120/followers","following_url":"https://github.myorg.com/api/v3/users/jsing120/following{/other_user}","gists_url":"https://github.myorg.com/api/v3/users/jsing120/gists{/gist_id}","starred_url":"https://github.myorg.com/api/v3/users/jsing120/starred{/owner}{/repo}","subscriptions_url":"https://github.myorg.com/api/v3/users/jsing120/subscriptions","organizations_url":"https://github.myorg.com/api/v3/users/jsing120/orgs","repos_url":"https://github.myorg.com/api/v3/users/jsing120/repos","events_url":"https://github.myorg.com/api/v3/users/jsing120/events{/privacy}","received_events_url":"https://github.myorg.com/api/v3/users/jsing120/received_events","type":"User","site_admin":false},"body":"Since this does not need index for each loop is preferred give this is on Java 8+.","created_at":"2025-02-20T18:02:54Z","updated_at":"2025-02-20T18:02:55Z","html_url":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3284863","pull_request_url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2","author_association":"MEMBER","_links":{"self":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3284863"},"html":{"href":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3284863"},"pull_request":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2"}},"reactions":{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3284863/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":11,"original_line":11,"side":"RIGHT","original_position":11,"position":11,"subject_type":"line"},{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3285329","pull_request_review_id":6189642,"id":3285329,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyODUzMjk=","diff_hunk":"@@ -0,0 +1,17 @@\n+package com.test;\n+\n+//TIP To <b>Run</b> code, press <shortcut actionId=\"Run\"/> or\n+// click the <icon src=\"AllIcons.Actions.Execute\"/> icon in the gutter.\n+public class Main {\n+ public static void main(String[] args) {\n+ //TIP Press <shortcut actionId=\"ShowIntentionActions\"/> with your caret at the highlighted text\n+ // to see how IntelliJ IDEA suggests fixing it.\n+ System.out.printf(\"Hello and welcome!\");\n+\n+ for (int i = 1; i <= 5; i++) {","path":"test_PR/src/main/java/com/test/Main.java","commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","original_commit_id":"20202e760284983da7f0034d7661c859d6c3b12b","user":{"login":"okali2","id":17394,"node_id":"MDQ6VXNlcjE3Mzk0","avatar_url":"https://github.myorg.com/avatars/u/17394?","gravatar_id":"","url":"https://github.myorg.com/api/v3/users/okali2","html_url":"https://github.myorg.com/okali2","followers_url":"https://github.myorg.com/api/v3/users/okali2/followers","following_url":"https://github.myorg.com/api/v3/users/okali2/following{/other_user}","gists_url":"https://github.myorg.com/api/v3/users/okali2/gists{/gist_id}","starred_url":"https://github.myorg.com/api/v3/users/okali2/starred{/owner}{/repo}","subscriptions_url":"https://github.myorg.com/api/v3/users/okali2/subscriptions","organizations_url":"https://github.myorg.com/api/v3/users/okali2/orgs","repos_url":"https://github.myorg.com/api/v3/users/okali2/repos","events_url":"https://github.myorg.com/api/v3/users/okali2/events{/privacy}","received_events_url":"https://github.myorg.com/api/v3/users/okali2/received_events","type":"User","site_admin":false},"body":"Instead of using a traditional for loop with an index, consider using a Java 8+ style for-each loop withIntStream.range()to simplify the code. For example:IntStream.range(1, 6).forEach(i -> { /* loop body */ });. This makes the code more concise and expressive.","created_at":"2025-02-20T20:51:57Z","updated_at":"2025-02-20T20:51:57Z","html_url":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3285329","pull_request_url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2","author_association":"MEMBER","_links":{"self":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3285329"},"html":{"href":"https://github.myorg.com/@myorg.com-eng/GH_TEST_PR_REPO/pull/2#discussion_r3285329"},"pull_request":{"href":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/2"}},"reactions":{"url":"https://github.myorg.com/api/v3/repos/@myorg.com-eng/GH_TEST_PR_REPO/pulls/comments/3285329/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"start_line":null,"original_start_line":null,"start_side":null,"line":11,"original_line":11,"side":"RIGHT","original_position":11,"position":11,"subject_type":"line"}]I did asked my enterprise admin, they did recycled the instances perhaps that did the trick 👀 . i will close this issue