{"id":37161184,"url":"https://github.com/nightfallai/nightfall_code_scanner","last_synced_at":"2026-01-14T19:11:26.383Z","repository":{"id":38326943,"uuid":"283637826","full_name":"nightfallai/nightfall_code_scanner","owner":"nightfallai","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-16T20:46:55.000Z","size":321,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-02T04:53:46.870Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nightfallai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-30T01:17:26.000Z","updated_at":"2022-01-07T01:21:20.000Z","dependencies_parsed_at":"2023-11-28T08:48:41.765Z","dependency_job_id":null,"html_url":"https://github.com/nightfallai/nightfall_code_scanner","commit_stats":null,"previous_names":["nightfallai/jenkins_test","nightfallai/nightfall_cli"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/nightfallai/nightfall_code_scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightfallai%2Fnightfall_code_scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightfallai%2Fnightfall_code_scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightfallai%2Fnightfall_code_scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightfallai%2Fnightfall_code_scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nightfallai","download_url":"https://codeload.github.com/nightfallai/nightfall_code_scanner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightfallai%2Fnightfall_code_scanner/sbom","scorecard":{"id":686709,"data":{"date":"2025-08-11","repo":{"name":"github.com/nightfallai/nightfall_code_scanner","commit":"54d2618cc03487d7e6e16279693fc361d7c5af43"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":9,"reason":"Found 27/30 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/coverage.yml:1","Warn: no topLevel permission defined: .github/workflows/nightfalldlp.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/nightfallai/nightfall_code_scanner/coverage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/coverage.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/nightfallai/nightfall_code_scanner/coverage.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/coverage.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/nightfallai/nightfall_code_scanner/coverage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightfalldlp.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/nightfallai/nightfall_code_scanner/nightfalldlp.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/nightfalldlp.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/nightfallai/nightfall_code_scanner/nightfalldlp.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating alpine:3.8 to alpine:3.8@sha256:2bb501e6173d9d006e56de5bce2720eb06396803300fe1687b58a7ff32bf4c14","Warn: downloadThenRun not pinned by hash: Dockerfile:11","Warn: downloadThenRun not pinned by hash: Dockerfile:12","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 downloadThenRun dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9","Warn: Project is vulnerable to: GO-2021-0113 / GHSA-ppp9-7jff-5vj2","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T01:06:45.018Z","repository_id":38326943,"created_at":"2025-08-22T01:06:45.018Z","updated_at":"2025-08-22T01:06:45.018Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28431646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T19:11:25.719Z","updated_at":"2026-01-14T19:11:26.375Z","avatar_url":"https://github.com/nightfallai.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nightfall_code_scanner\n\n![Nightfall_Code_Scanner](https://cdn.nightfall.ai/nightfall-dark-logo-tm.png \"Nightfall_Code_Scanner\")\n\n### Nightfall_Code_Scanner - a code review tool that protects you from committing sensitive information\n\nThe `nightfall_code_scanner` is a code review tool that protects you from committing sensitive information to your\nversion control. It is intended to be used as a part of your CI to simplify the development process, improve your\nsecurity, and ensure you never accidentally leak secrets or other sensitive information via an accidental commit.\n\n## Supported Services\n* [GitHub Action](https://github.com/nightfallai/nightfall_dlp_action)\n* [CircleCI Orb](https://github.com/nightfallai/nightfall_circle_orb)\n\n## NightfallDLP Config File\n\nThe `.nightfalldlp/config.json` file contains configuration to define which detectors to use when scanning\ncontent from pull requests. If you do not explicitly define this config file in your code repository, the default\nconfig will be equivalent to the snippet below:\n\n```json\n{\n  \"detectionRules\": [\n    {\n      \"logicalOp\": \"ANY\",\n      \"name\": \"Nightfall Default Detection Rule\",\n      \"detectors\": [\n        {\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"API_KEY\",\n          \"minConfidence\": \"POSSIBLE\",\n          \"minNumFindings\": 1\n        },\n        {\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"CRYPTOGRAPHIC_KEY\",\n          \"minConfidence\": \"POSSIBLE\",\n          \"minNumFindings\": 1\n        },\n        {\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"PASSWORD_IN_CODE\",\n          \"minConfidence\": \"POSSIBLE\",\n          \"minNumFindings\": 1\n        }\n      ]\n    }\n  ],\n  \"annotationLevel\": \"failure\"\n}\n```\n\nIf you plan on using non-default settings, the config file supports the following options:\n\n### Detection Rule UUIDs\n\nA Detection Rule UUID is a unique identifier for a [Detection Rule](https://docs.nightfall.ai/docs/entities-and-terms-to-know#detection-rules)\nthat has been built in the [Nightfall Dashboard](https://app.nightfall.ai/detection-engine/detection-rules). Users can copy a set of UUIDs from\nthe dashboard, then paste them into the config file, like below:\n\n```json\n{ \"detectionRuleUUIDs\": [\"A0BA0D76-78B4-4E10-B653-32996060316B\", \"c035c4f3-eeb2-4764-a715-c8461f388661\"] }\n```\n\n### Detection Rules\n\nDetection Rules are a list of detectors specified inline. In addition to the list of inline detector definitions, a\ndetection rule contains an optional display name, as well as an operator `logicalOp` that is applied to the list\nof detectors.\n\n```json\n{\n  \"detectionRules\": [\n    {\n      \"name\": \"my detection rule\",\n      \"logicalOp\": \"ANY\",\n      \"detectors\": []\n    }\n  ]\n}\n```\n\nThe `logicalOp` field supports two values: `ANY` (logical OR), and `ALL` (logical AND).\nConsider scanning the payload `\"my ssn is 678-99-8212\"` against a detection rule containing the `CREDIT_CARD_NUMBER` and\n`US_SOCIAL_SECURITY_NUMBER` detectors with the logical op `ANY`. In this case, Nightfall would return a finding for the\nstring `678-99-8212` from the SSN detector. However, scanning this same payload with a logical op of `ALL` will not\nreturn any findings, since the string does not contain any credit card numbers.\n\n### Detector\n\nA detector represents the atomic unit of scanning for sensitive data. The simplest examples of detectors leverage\nNightfall's pre-built detectors for data types such as `CREDIT_CARD_NUMBER` or `API_KEY`. The list of available\ndetectors is available [here](https://docs.nightfall.ai/docs/detector-glossary). As an example:\n\n```json\n  {\n    \"detector\": {\n      \"detectorType\": \"NIGHTFALL_DETECTOR\",\n      \"nightfallDetector\": \"API_KEY\",\n      \"displayName\": \"apiKeyDetector\",\n      \"minNumFindings\": 1,\n      \"minConfidence\": \"LIKELY\"\n    }\n  }\n```\n\nTwo common configurations across all types of detectors are:\n- `minNumFindings`: an integer number of findings that must match the input string in order for Nightfall to return a finding\n- `minConfidence`: the minimum confidence threshold that Nightfall must meet in order to return a finding. This field is a string enum; possible values are defined [in the API docs](https://docs.nightfall.ai/docs/entities-and-terms-to-know#confidence-levels).\n\n## Additional Configuration\n\nIn addition to detection rule configuration, you can also use your config file to further customize the scan process.\n\n### Token Exclusion\n\nTo ignore specific tokens, you can add the `tokenExclusionList` field to your config. The `tokenExclusionList` is a\nlist of strings, and it mutes findings that match any of the provided regular expression patterns.\n\nHere's an example use case:\n\n```\ntokenExclusionList: [\"NF-gGpblN9cXW2ENcDBapUNaw3bPZMgcABs\", \"^127\\\\.\"]\n```\n\nIn the example above, findings with the API token `NF-gGpblN9cXW2ENcDBapUNaw3bPZMgcABs`, as well as\nIP addresses starting with `127.`, would not be reported. For more information on how we match tokens, take a\nlook at [the docs](https://docs.nightfall.ai/docs/entities-and-terms-to-know#custom-detectors).\n\n### File Inclusion/Exclusion\n\nThe field `fileExclusionList` specifies glob patterns for files that should not be scanned during CI.\nConversely, the field `fileInclusionList` specifies glob patterns for the files that should be scanned during CI.\n\nHere's an example use case:\n\n```\n    fileExclusionList: [\"*/tests/*\"],\n    fileInclusionList: [\"*.go\", \"*.json\"]\n```\n\nIn the example, we are ignoring all file paths with a `tests` subdirectory, and only scanning on `go` and `json` files.\n\n### Redaction\n\nRedaction can be configured by using the key `defaultRedactionConfig`. Nightfall supports the following keys on this\nobject:\n* `maskConfig`: replacing findings with a character; for example the SSN `678-99-8212` might be masked as `***-**-****`.\n* `substitutionConfig`: replacing findings with a custom phrase, such as `oh no! 🙈`\n* `infoTypeSubstitutionConfig`: replacing findings with the name of the matched info type, such as `CREDIT_CARD_NUMBER`.\n* `cryptoConfig`: using an RSA public key to encrypt findings\n\nIf your config file specifies a non-null value for `defaultRedactionConfig`, then exactly one of the above keys must be\nfilled out; if more than one is filled out, the Nightfall API will return a 400 error code.\n\nFor more information on how to configure redaction-related fields, refer to the [Nightfall docs](https://docs.nightfall.ai/reference/scanpayloadv3).\n\n### Annotation Level customization\n\nAnnotations can be configured to be `notice`, `warning`, or `failure`, by setting the `annotationLevel` key in the\nconfiguration object. The check will only fail if `failure` annotations are written.\n\n## Configuration Examples\n\n- Using a pre-built Detection Rule\n\n```json\n{ \"detectionRules\": [\"83533b7c-de88-466a-b137-fceb8f2a8a57\"] }\n```\n\n- Inline Detection Rule using Nightfall Detectors\n\n```json\n{\n  \"detectionRules\": [\n    {\n      \"name\": \"my rule\",\n      \"detectors\": [\n        {\n          \"minNumFindings\": 1,\n          \"minConfidence\": \"POSSIBLE\",\n          \"displayName\": \"nfAPIKEY\",\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"API_KEY\"\n        },\n        {\n          \"minNumFindings\": 2,\n          \"minConfidence\": \"POSSIBLE\",\n          \"displayName\": \"nfCC\",\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"CREDIT_CARD_NUMBER\"\n        }\n      ],\n      \"logicalOp\": \"ANY\"\n    }\n  ]\n}\n```\n\n- Inline Detection Rules using Regex and WordList detectors\n\n```json\n{\n  \"detectionRules\": [\n    {\n      \"name\": \"regex rule\",\n      \"detectors\": [\n        {\n          \"minNumFindings\": 1,\n          \"minConfidence\": \"POSSIBLE\",\n          \"displayName\": \"simpleRegexCouponDetector\",\n          \"detectorType\": \"REGEX\",\n          \"regex\": {\n            \"pattern\": \"coupon:\\\\d{4,}\",\n            \"isCaseSensitive\": false\n          }\n        }\n      ],\n      \"logicalOp\": \"ANY\"\n    },\n    {\n      \"name\": \"word list rule\",\n      \"detectors\": [\n        {\n          \"minNumFindings\": 1,\n          \"minConfidence\": \"POSSIBLE\",\n          \"displayName\": \"simpleWordListKeyDetector\",\n          \"detectorType\": \"WORD_LIST\",\n          \"wordList\": {\n            \"values\": [\"key\", \"credential\"],\n            \"isCaseSensitive\": false\n          }\n        }\n      ],\n      \"logicalOp\": \"ANY\"\n    }\n  ]\n}\n```\n\n- Detection Rule containing context and exclusion rules:\n\n```json\n{\n  \"detectionRules\": [\n    {\n      \"name\": \"\",\n      \"detectors\": [\n        {\n          \"minNumFindings\": 2,\n          \"minConfidence\": \"POSSIBLE\",\n          \"displayName\": \"nfCC\",\n          \"detectorType\": \"NIGHTFALL_DETECTOR\",\n          \"nightfallDetector\": \"CREDIT_CARD_NUMBER\",\n          \"contextRules\": [\n            {\n              \"regex\": {\n                \"pattern\": \"credit card\",\n                \"isCaseSensitive\": true\n              },\n              \"proximity\": {\n                \"windowBefore\": 30,\n                \"windowAfter\": 30\n              },\n              \"confidenceAdjustment\": {\n                \"fixedConfidence\": \"VERY_LIKELY\"\n              }\n            }\n          ],\n          \"exclusionRules\": [\n            {\n              \"matchType\": \"PARTIAL\",\n              \"exclusionType\": \"REGEX\",\n              \"regex\": {\n                \"pattern\": \"4242-4242-4242-4242\",\n                \"isCaseSensitive\": true\n              },\n              \"wordList\": null\n            }\n          ]\n        }\n      ],\n      \"logicalOp\": \"ANY\"\n    }\n  ],\n  \"maxNumberConcurrentRoutines\": 5,\n  \"tokenExclusionList\": [\n    \"4916-6734-7572-5015\",\n    \"301-123-4567\",\n    \"1-240-925-5721\",\n    \"xG0Ct4Wsu3OTcJnE1dFLAQfRgL6b8tIv\"\n  ],\n  \"fileInclusionList\": [\"*\"]\n}\n```\n\n- Sample Redaction Configurations:\n\nMasking:\n```json\n{\n  \"defaultRedactionConfig\": {\n    \"maskConfig\": {\n      \"maskingChar\": \"👀\",\n      \"charsToIgnore\": [\"-\",\" \"]\n    }\n  }\n}\n```\n\nSubstitution:\n```json\n{\n  \"defaultRedactionConfig\": {\n    \"substitutionConfig\": {\n      \"substitutionPhrase\": \"REDACTED\"\n    }\n  }\n}\n\n```\nInfo Type Substitution:\n```json\n{\n  \"defaultRedactionConfig\": {\n    \"infoTypeSubstitutionConfig\": {}\n  }\n}\n```\n\nEncryption:\n```json\n{\n  \"defaultRedactionConfig\": {\n    \"cryptoConfig\": {\n      \"publicKey\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2VUXMyeEZ8bCJd6OWUJG\\n...-----END PUBLIC KEY-----\"\n    }\n  }\n}\n```\n\nAnnotate as Warnings:\n```json\n{\n  \"annotationLevel\": \"warning\"\n}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightfallai%2Fnightfall_code_scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnightfallai%2Fnightfall_code_scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightfallai%2Fnightfall_code_scanner/lists"}