{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":28784,"path":"it-operations-management/agent-client-collector/create-edit-assets.md","title":"Create and edit Agent Client Collector plugins","bundle":null,"doc_type":null,"release":"australia","body":"\n# Create and edit Agent Client Collector plugins\n\nCustom plugins extend Agent Client Collector monitoring capabilities beyond the default plugins. You can create plugins for specific monitoring requirements or modify existing plugins.\n\n## Before you begin\n\nRole required: agent\\_client\\_collector\\_admin\n\n## Procedure\n\n1.  Put every script or executable the plugin needs inside `bin/` .\n\n    -   For Linux and macOS assets, ensure that the agent can execute these files.\n    -   Make each script/executable executable before building the archive:`chmod +x bin/my_script.rb bin/helper.sh`\n    -   For Windows plugins that run scripts other than batch files, include a batch file in`bin/` that calls the actual script. For example, a batch file can call a PowerShell script using `powershell %~dp0\\test.ps1`.\n2.  If the plugin requires ACC command allowlist validation, create `allow_list/allow_list.json` at the top level of the plugin folder.\n\n    The file is a JSON array. Each entry defines an allowed executable and the arguments it may receive.\n\n    ```\n    [\n      {\n        \"args\": [\n          \"-d\",\n          \"--parent_cache_dir\",\n          \"/var/cache/servicenow/agent-client-collector/\"\n        ],\n        \"exec\": \"my_script.rb\",\n        \"skip_arguments\": false\n      },\n      {\n        \"args\": [\n          \"--log-level=(FATAL|ERROR|WARN|INFO|DEBUG)\",\n          \"-l\",\n          \"(FATAL|ERROR|WARN|INFO|DEBUG)\"\n        ],\n        \"exec\": \"helper.sh\",\n        \"skip_arguments\": false,\n        \"use_regex\": true\n      }\n    ```\n\n    Field meanings:\n\n    -   **exec**: the file name inside `bin/` that is allowed to run.\n    -   **args**: list of allowed arguments. Set **use\\_regex** to `true` when an argument is a regular expression.\n    -   **skip\\_arguments**: when `true`, the agent allows the command to run but does not validate the argument list.\n    You can generate a starting allowlist from the instance using the **Agent Client Collector Command Allow-list Generator** page.\n\n3.  Build the `.tar.gz`.\n\n    -   On Linux or macOS:\n\n        Open a terminal, change to the plugin folder \\(the folder that contains `bin/``` and optionally `allow_list/```\\), then run:\n\n        ```bash\n        tar -C . -zcvf my_custom_plugin.tar.gz *\n        ```\n\n        Command options:\n\n        -   `-C .` — uses the current folder as the base, so the archive contents sit at the root level \\(`bin/`, `allow_list/`\\) instead of being wrapped in an extra parent folder.\n        -   `-z` — gzip compression.\n        -   `-c` — create the archive.\n        -   `-v` — verbose output.\n        -   `-f my_custom_plugin.tar.gz` — output file name.\n        -   `*` — include all files and folders in the current directory.\n    -   On Windows:\n\n        Use any archiving utility that supports the `.tar.gz` format. Ensure the archive contains `bin/` at the root and optionally `allow_list/` at the root. Do not wrap the contents in an extra parent folder.\n\n4.  Before you upload, verify that the archive has the correct top-level structure:\n\n    Run the following command:\n\n    ```bash\n    tar -tzf my_custom_plugin.tar.gz\n    ```\n\n    Expected output:\n\n    ```text\n    bin/\n    allow_list/\n    bin/my_script.rb\n    bin/helper.sh\n    allow_list/allow_list.json\n    ```\n\n    There must be no extra parent directory such as `my_custom_plugin/bin/`.\n\n5.  Attach the `tar.gz` file to the plugin record, according to the instructions that appear on the UI page.\n\n6.  Navigate to **All** &gt; **Agent Client Collector** &gt; **Configuration** &gt; **ACC Plugins**.\n\n7.  Click **New**.\n\n    The **Agent Client Collector Plugin - New record** page appears.\n\n8.  Enter values in the fields on the page, as described in the following table.\n\n    |Field|Description|\n    |-----|-----------|\n    |**Name**|Plugin name. This field is populated automatically with the name of the tar.gz file attached to the plugin, and is visible only when selecting an existing record.|\n    |**Description**|Description of the plugin.|\n    |**Operating System**|Selects the operating system to be monitored by the plugin.|\n    |**Platform**|Selects the platform to be monitored by the plugin.|\n    |**Active**|Selected to activate the plugin and download it to the MID server.|\n    |**Advanced**|Selected to enable selecting the operating system version to be monitored by the plugin.|\n    |**OS Version**|Selects the operating system version to be monitored by the plugin. This field appears only when selecting the **Advanced** check box.|\n\n\n-   **[Secure a custom plugin with a certificate](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/it-operations-management/agent-client-collector/acc-self-sign-certificate.md)**  \nWhen you customize or create an Agent Client Collector plugin, you can secure the plugin with either a third-party certificate or an internal secure certificate in the plugin's script. Official plugins are signed by an external certificate authority.\n\n**Parent Topic:**[Deploying Agent Client Collector on servers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/it-operations-management/agent-client-collector/acc-server-deployment.md)\n\n"}}