Ae1
- Category
- analysis-evasion
- Confidence
- 100% confidence
- Finding
Referenced artifact was not completely inspected
- Content
md | `references/api-namespaces.md` | Namespace/function reference (UI, Time, Text, IO, Net, Json, nvg, Math…) |
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent Openplanet plugin-development skill, with some high-risk game-modding guidance that users should follow carefully.
Use this skill only for Openplanet plugin development. Before following its process-kill, archive, or log-clearing recipes, save game/editor work and keep backups. Treat Dev memory writes, hooks, patches, unsigned plugins, registry files, and SmartScreen bypass steps as advanced actions: verify sources, prefer read-only checks first, and use per-build validation before writing to game memory.
Referenced artifact was not completely inspected
| `references/api-namespaces.md` | Namespace/function reference (UI, Time, Text, IO, Net, Json, nvg, Math…) |
Referenced artifact was not completely inspected
| `references/openplanet-docs-dump.md` | Raw Openplanet docs dump (search only when the above fail) |
The guidance tells the agent to run rm -rf /tmp/foo before unpacking. In isolation this is a common cleanup step, but in an agent/tooling context it is dangerous because recursive deletion is destructive, assumes the target path is safe, and could remove unintended data if the path is reused, symlinked, or adapted unsafely in future edits.
unzip -l Plugins/Foo-1.0.0.op # manifest first
rm -rf /tmp/foo && mkdir -p /tmp/foo && unzip -q Plugins/Foo-1.0.0.op -d /tmp/foo
Pitfalls:
The guidance tells the agent to run rm -rf /tmp/foo before unpacking. In isolation this is a common cleanup step, but in an agent/tooling context it is dangerous because recursive deletion is destructive, assumes the target path is safe, and could remove unintended data if the path is reused, symlinked, or adapted unsafely in future edits.
unzip -l Plugins/Foo-1.0.0.op # manifest first
rm -rf /tmp/foo && mkdir -p /tmp/foo && unzip -q Plugins/Foo-1.0.0.op -d /tmp/foo
Pitfalls:
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
In Openplanet 1.24.4, **Developer Mode** was introduced. By default, it is disabled to prevent unsigned plugins from being loaded. For development, you must enable it as your plugin will only be signed during the upload and review process on the website.
To enable Developer Mode:
1. Open the Openplanet overlay (`F3`).
2. Go to `Developer -> Signature Mode`.
3. Select the **"Developer"** option.
Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.
2. Go to `Developer -> Signature Mode`.
3. Select the **"Developer"** option.
Once selected, the mode is enabled. To disable it, deselect the option and restart the game. Optionally, you can enable developer mode on game startup through the Openplanet settings.
Now that Developer Mode is enabled, you can start working on your plugin.
This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.
2. Go to `Developer -> Signature Mode`.
3. Select the **"Developer"** option.
Once selected, the mode is enabled. To disable it, deselect the option and restart the game. Optionally, you can enable developer mode on game startup through the Openplanet settings.
Now that Developer Mode is enabled, you can start working on your plugin.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
As of Openplanet 1.21.0, plugins can depend on other plugins. For a plugin (A) to run if it depends on another plugin (B), both A and B need to be installed. Dependent plugins inherit parts of the implementation of their dependencies by importing their exports. These exported functions (and optionally shared classes) can then be used by any dependent plugins.
For example, the built-in `NadeoServices` plugin allows dependent plugins to use the same access tokens for Nadeo's live services. This saves resources, simplifies development, and avoids potential rate limiting or conflicts.
### Depending on a plugin
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!--
SOURCE: github.com/XertroV/tm-plugin-skills — skills/openplanet-reviewer/references/evidence-precedents.md
AUTHOR: XertroV
LICENSE: CC0-1.0 OR Unlicense (public-domain equivalent; free to reuse, modify, redistribute)
Without declared permissions the skill's intent is opaque and cannot be validated.
The skill instructs users to force-kill the game process (taskkill /F) to reload compiled state, but does not warn that this can discard unsaved maps, settings, or in-session progress. In a development workflow skill, users are likely to follow commands verbatim, so omission of a safety warning creates a realistic destructive-action risk.
This markdown file provides a destructive command, taskkill /F /IM ManiaPlanet.exe, and recommends always killing the game before copying a fresh plugin. While the purpose is operationally relevant, the instructions do not warn the user that force termination can discard unsaved state or interrupt in-progress activity.
The markdown instructs users to force-kill the game process, clear a log file, and patch plugin files directly, all of which can disrupt running work or destroy diagnostic history. The section presents these steps as routine workflow but does not warn users about potential data loss, unsaved progress loss, or irreversible log clearing.
The file explicitly recommends taskkill /F /IM ManiaPlanet.exe as part of the update workflow for .op plugins. Force-killing a running application can cause loss of unsaved work, interrupted writes, or state corruption, and the nearby text does not clearly warn about those risks before presenting the command as a standard step.
The document explicitly recommends a Tier-2 'velocity restore via Dev::SetOffset', which introduces direct memory-write capability into a plugin-development reference. In the context of Openplanet plugin development, this crosses from normal API use into arbitrary process-memory manipulation, which can be repurposed for cheating, unsafe state corruption, or bypassing intended game/plugin safety boundaries.
The documentation explicitly tells users how to bypass Windows SmartScreen and unblock an unsigned installer, but it does not pair that advice with any provenance verification steps such as checking the official download source, hashes, signatures, or release channel. In a plugin-development context, normalizing bypass of OS trust prompts increases the chance that users will run tampered or spoofed installers.
The crash guide instructs users to install a registry file to enable dump generation without warning that registry modifications change system behavior and should only be performed from a trusted source. Even if well-intended, this creates unsafe admin-behavior patterns and could be abused if the linked file were replaced or spoofed.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
These are the functions that will be called for each plugin, if the plugin exists.
| Function Signature | Description | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()` | Main entry point. | Yes |
| `void Render()` | Render function called every frame (always, even if overlay is closed). | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| Function Signature | Description | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()` | Main entry point. | Yes |
| `void Render()` | Render function called every frame (always, even if overlay is closed). | No |
| `void RenderInterface()` | Render function called every frame intended for UI when the Openplanet overlay is active. | No |
| `void RenderMenu()` | Render function called every frame intended only for menu items in UI. | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| Function Signature | Description | Yieldable |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `void Main()` | Main entry point. | Yes |
| `void Render()` | Render function called every frame (always, even if overlay is closed). | No |
| `void RenderInterface()` | Render function called every frame intended for UI when the Openplanet overlay is active. | No |
| `void RenderMenu()` | Render function called every frame intended only for menu items in UI. | No |
| `void RenderMenuMain()` | Render function called every frame intended only for menu items in the main menu of the UI. | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| `void Main()` | Main entry point. | Yes |
| `void Render()` | Render function called every frame (always, even if overlay is closed). | No |
| `void RenderInterface()` | Render function called every frame intended for UI when the Openplanet overlay is active. | No |
| `void RenderMenu()` | Render function called every frame intended only for menu items in UI. | No |
| `void RenderMenuMain()` | Render function called every frame intended only for menu items in the main menu of the UI. | No |
| `void RenderSettings()` | **Deprecated:** Use `[SettingsTab]` instead! Render function called every frame intended for within Openplanet's settings window for UI. | No |
| `void Update(float dt)` | Called every frame. `dt` is the delta time (milliseconds since last frame). | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| `void Update(float dt)` | Called every frame. `dt` is the delta time (milliseconds since last frame). | No |
| `void OnDisabled()` | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnEnabled()` | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnDestroyed()` | Called when the plugin is unloaded and completely removed from memory. | No |
| `void OnSettingsChanged()` | Called when a setting in the settings panel was changed. | No |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved. | No |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded. | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| `void OnDisabled()` | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnEnabled()` | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnDestroyed()` | Called when the plugin is unloaded and completely removed from memory. | No |
| `void OnSettingsChanged()` | Called when a setting in the settings panel was changed. | No |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved. | No |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded. | No |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum. | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| `void OnDisabled()` | Called when the plugin is disabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnEnabled()` | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnDestroyed()` | Called when the plugin is unloaded and completely removed from memory. | No |
| `void OnSettingsChanged()` | Called when a setting in the settings panel was changed. | No |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved. | No |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded. | No |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum. | No |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| `void OnEnabled()` | Called when the plugin is enabled from the settings, the menu, or programmatically via the Meta API. | No |
| `void OnDestroyed()` | Called when the plugin is unloaded and completely removed from memory. | No |
| `void OnSettingsChanged()` | Called when a setting in the settings panel was changed. | No |
| `void OnSettingsSave(Settings::Section& section)` | Called when the settings for the plugin are being saved. | No |
| `void OnSettingsLoad(Settings::Section& section)` | Called when the settings for the plugin are being loaded. | No |
| `void OnKeyPress(bool down, VirtualKey key)` | Called whenever a key is pressed on the keyboard. See documentation for `VirtualKey` enum. | No |
| `UI::InputBlocking OnKeyPress(bool down, VirtualKey key)` | (Alternative signature) Called whenever a key is pressed. Can block input. | No |
No suspicious patterns detected.