Skip to content

Comments

Docs: Fix Discrepancies#1380

Merged
KCarretto merged 5 commits intomainfrom
docs-fix-discrepancies-9413631596083015394
Dec 24, 2025
Merged

Docs: Fix Discrepancies#1380
KCarretto merged 5 commits intomainfrom
docs-fix-discrepancies-9413631596083015394

Conversation

@google-labs-jules
Copy link
Contributor

I have audited the codebase and updated the documentation to reflect the current implementation of the Eldritch DSL and Tavern configuration.

Discrepancies Found and Fixed:

Area Item Code Docs (Before) Action
Tavern Config HTTP_METRICS_LISTEN_ADDR Default 127.0.0.1:8080 Default 127.0.0.1:8000 Updated Docs
Tavern Config Logging Env Vars Exists Missing Added to Docs
Tavern Config GCP Env Vars Exists Missing Added to Docs
Tavern Config Test/Exit Env Vars Exists Missing Added to Docs
Eldritch DSL file.move Named move Named moveto Updated Docs
Eldritch DSL file.timestomp Implemented Unimplemented Updated Docs
Eldritch DSL http.get/post Returns Dict Returns str Updated Docs
Eldritch DSL pivot.reverse_shell_repl Exists Missing Added to Docs
Eldritch DSL pivot.bind_proxy etc Stubbed/Missing Documented Removed from Docs
Eldritch DSL pivot.port_scan Has fd_limit arg Missing arg Updated Docs
Eldritch DSL sys.exec Has input arg Missing arg Updated Docs
Eldritch DSL crypto Has aes_decrypt, md5, etc Missing Added to Docs
Eldritch DSL random Has bytes, uuid Missing Added to Docs
Eldritch DSL time.sleep Takes int Takes float Updated Docs

PR created automatically by Jules for task 9413631596083015394 started by @KCarretto

@google-labs-jules
Copy link
Contributor Author

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!


For security, I will only act on instructions from the user who triggered this task.

New to Jules? Learn more at jules.google/docs.


## Agent

### agent._terminate_this_process_clowntown (V2-Only)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this as marked (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored (V2-Only) tag.

> **DANGER**: The **agent._terminate_this_process_clowntown** method terminates the agent process immediately by calling `std::process::exit(0)`. This effectively kills the agent and should be used with extreme caution. This function does not return as the process exits.

### agent.get_config (V2-Only)
### agent.get_config
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this as marked (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored (V2-Only) tag.

The **agent.get_config** method returns the current configuration of the agent as a dictionary containing configuration keys and values. This method will error if the configuration cannot be retrieved.

### agent.get_transport (V2-Only)
### agent.get_transport
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this as marked (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored (V2-Only) tag.

The **agent.get_transport** method returns the name of the currently active transport (e.g., "http", "grpc").

### agent.list_transports (V2-Only)
### agent.list_transports
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this as marked (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored (V2-Only) tag.

The **agent.list_transports** method returns a list of available transport names supported by the agent.

### agent.get_callback_interval (V2-Only)
### agent.get_callback_interval
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this as marked (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored (V2-Only) tag.

@@ -516,9 +541,9 @@

### file.timestomp
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mark this as (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked as (V2-Only).

The **pivot.reverse_shell_pty** method spawns the provided command in a cross-platform PTY and opens a reverse shell over the agent's current transport (e.g. gRPC). If no command is provided, Windows will use `cmd.exe`. On other platforms, `/bin/bash` is used as a default, but if it does not exist then `/bin/sh` is used.

### pivot.smb_exec
### pivot.reverse_shell_repl
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mark this as (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked as (V2-Only).


The <b>random.bool</b> method returns a randomly sourced boolean value.

### random.bytes
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mark this as (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked as (V2-Only).

`random.string(length: uint, charset: Optional<str>) -> str`
The <b>random.string</b> method returns a randomly generated string of the specified length. If `charset` is not provided defaults to [Alphanumeric](https://docs.rs/rand_distr/latest/rand_distr/struct.Alphanumeric.html). Warning, the string is stored entirely in memory so exceptionally large files (multiple megabytes) can lead to performance issues.

### random.uuid
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mark this as (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked as (V2-Only).

On *nix systems disown will run the process in the background disowned from the agent. This is done through double forking.
On Windows systems disown will run the process with detached stdin and stdout such that it won't block the tomes execution.
The `env_vars` will be a map of environment variables to be added to the process of the execution.
The `input` parameter allows you to pass a string to the process's stdin.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mark this as (V2-Only)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marked as (V2-Only).

---
# Overview

🚨 **DEPRECATION WARNING:** Eldritch v1 will soon be deprecated and replaced with v2 🚨
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this deprecation warning

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored the deprecation warning.

Eldritch is a small interpreter that can be embedded into a c2 agent as it is with Golem and Imix.
By embedding the interpreter into the agent conditional logic can be quickly evaluated without requiring multiple callbacks.

Eldritch is currently under active development to help delineate methods in development the description contains the phrase `X method will`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this sentence

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored the sentence.

If your dll_bytes array contains a value greater than u8::MAX it will cause the function to fail. If you're doing any decryption in starlark make sure to be careful of the u8::MAX bound for each byte.

### sys.exec
### sys.exec (V2-Only)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, just the input param is v2 only

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated sys.exec header to remove (V2-Only) and moved the tag to the input parameter description.

@KCarretto KCarretto marked this pull request as ready for review December 23, 2025 23:20
@KCarretto KCarretto requested a review from hulto December 23, 2025 23:20
Copy link
Collaborator

@hulto hulto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

| ------- | ----------- | ------- | -------- |
| ENABLE_METRICS | Set to any value to enable the "/metrics" endpoint. | Disabled | No |
| HTTP_METRICS_LISTEN_ADDR | Listen address for the metrics HTTP server, it must be different than the value of `HTTP_LISTEN_ADDR`. | `127.0.0.1:8000` | No |
| HTTP_METRICS_LISTEN_ADDR | Listen address for the metrics HTTP server, it must be different than the value of `HTTP_LISTEN_ADDR`. | `127.0.0.1:8080` | No |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch eventually this should be a diff port.
Tavern is 8000
Redirector is 8080

@KCarretto KCarretto merged commit 5b2a795 into main Dec 24, 2025
5 of 10 checks passed
@KCarretto KCarretto deleted the docs-fix-discrepancies-9413631596083015394 branch December 24, 2025 04:02
nullmonk pushed a commit that referenced this pull request Dec 24, 2025
* Docs: Fix discrepancies in Tavern config and Eldritch DSL

* Docs: Address PR feedback (V2 tags, remove unimplemented methods)

* Docs: Address feedback (restore warnings, refine V2 tags)

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: KCarretto <Kcarretto@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants